From a8ef94eb87ed1a7f5e155eed8c3139bc60040293 Mon Sep 17 00:00:00 2001 From: Martin Szulecki Date: Tue, 4 Aug 2009 12:46:28 +0200 Subject: Add initial sources with ability to open and view .plist files --- src/plist-utils.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/plist-utils.c (limited to 'src/plist-utils.c') diff --git a/src/plist-utils.c b/src/plist-utils.c new file mode 100644 index 0000000..fe63439 --- /dev/null +++ b/src/plist-utils.c @@ -0,0 +1,51 @@ +/* + * plist-utils.c + * + * Copyright (C) 2009 Martin Szulecki + * + * The code contained in this file is free software; you can redistribute + * it and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version + * 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this code; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include + +#include "plist-utils.h" + +int plist_node_get_item_count(plist_t node) { + plist_t child; + plist_type type = PLIST_KEY; + plist_type child_type; + int count = 0; + + type = plist_get_node_type(node); + + child = plist_get_first_child(node); + if (child == NULL) + return count; + + for(child; child != NULL; child = plist_get_next_sibling(child)) { + if (type == PLIST_ARRAY) { + child_type = plist_get_node_type(child); + if ((child_type != PLIST_DICT) && (child_type != PLIST_ARRAY)) + count++; + } + else if (plist_get_node_type(child) == PLIST_KEY) { + count++; + } + } + + return count; +} + -- cgit v1.1-32-gdbae