plist_utils: introduce xbps_show_pkg_info().

--HG--
extra : convert_revision : b45e5817be93692280218ceb89133671ee3b1172
This commit is contained in:
Juan RP 2008-12-20 03:02:01 +01:00
parent 6a779c98d5
commit e6e047bc6b
2 changed files with 67 additions and 0 deletions

View file

@ -33,6 +33,8 @@
#include "xbps_api.h"
static void xbps_list_strings_in_array2(prop_object_t);
bool
xbps_add_array_to_dict(prop_dictionary_t dict, prop_array_t array,
const char *key)
@ -224,6 +226,44 @@ fail:
return false;
}
void
xbps_show_pkg_info(prop_dictionary_t dict)
{
prop_object_iterator_t iter;
prop_object_t obj, obj2;
if (dict == NULL || prop_dictionary_count(dict) == 0)
return;
iter = prop_dictionary_iterator(dict);
if (iter == NULL)
return;
while ((obj = prop_object_iterator_next(iter))) {
/* Print the key */
printf("%s: ", prop_dictionary_keysym_cstring_nocopy(obj));
/* Get the obj for current keysym */
obj2 = prop_dictionary_get_keysym(dict, obj);
if (prop_object_type(obj2) == PROP_TYPE_STRING) {
printf("%s\n", prop_string_cstring_nocopy(obj2));
} else if (prop_object_type(obj2) == PROP_TYPE_NUMBER) {
printf("%zu\n",
prop_number_unsigned_integer_value(obj2));
} else if (prop_object_type(obj2) == PROP_TYPE_ARRAY) {
printf("\n\t");
xbps_callback_array_iter_in_dict(dict,
prop_dictionary_keysym_cstring_nocopy(obj),
xbps_list_strings_in_array2);
printf("\n");
}
}
prop_object_iterator_release(iter);
}
void
xbps_list_pkgs_in_dict(prop_object_t obj)
{
@ -239,6 +279,23 @@ xbps_list_pkgs_in_dict(prop_object_t obj)
printf("%s (%s)\t%s\n", pkgname, version, short_desc);
}
static void
xbps_list_strings_in_array2(prop_object_t obj)
{
static uint16_t count;
if (prop_object_type(obj) != PROP_TYPE_STRING)
return;
if (count == 4) {
printf("\n\t");
count = 0;
}
printf("%s ", prop_string_cstring_nocopy(obj));
count++;
}
void
xbps_list_strings_in_array(prop_object_t obj)
{

View file

@ -131,4 +131,14 @@ xbps_list_strings_in_array(prop_object_t);
bool
xbps_register_repository(const char *);
/*
* Shows information of a package by looking at its dictionary.
* All known objects on it will be showed up.
*
* Arguments:
* - prop_dictionary_t: the package dictionary.
*/
void
xbps_show_pkg_info(prop_dictionary_t);
#endif /* !_XBPS_PLIST_UTILS_H_ */