free(fi);
}
+RAZOR_EXPORT struct razor_string_iterator *
+razor_install_prefix_iterator_create(struct razor_set *set,
+ struct razor_package *package)
+{
+ struct razor_string_iterator *si;
+
+ assert (set != NULL);
+ assert (package != NULL);
+
+ si = zalloc(sizeof *si);
+ si->set = set;
+
+ si->index = list_first(&package->install_prefixes,
+ &set->prefix_pool);
+
+ return si;
+}
+
+RAZOR_EXPORT int
+razor_string_iterator_next(struct razor_string_iterator *si,
+ const char **string)
+{
+ char *pool;
+ int valid;
+
+ assert (si != NULL);
+
+ if (si->index) {
+ pool = si->set->string_pool.data;
+ *string = &pool[si->index->data];
+ si->index = list_next(si->index);
+ valid = 1;
+ } else {
+ *string = NULL;
+ valid = 0;
+ }
+
+ return valid;
+}
+
+RAZOR_EXPORT void
+razor_string_iterator_destroy(struct razor_string_iterator *si)
+{
+ free(si);
+}
+
struct razor_package_query {
struct razor_set *set;
char *vector;
void razor_set_list_package_files(struct razor_set *set,
struct razor_package *package);
+struct razor_string_iterator;
+struct razor_string_iterator *
+razor_install_prefix_iterator_create(struct razor_set *set,
+ struct razor_package *package);
+int razor_string_iterator_next(struct razor_string_iterator *si,
+ const char **string);
+void razor_string_iterator_destroy(struct razor_string_iterator *si);
+
enum razor_diff_action {
RAZOR_DIFF_ACTION_ADD,
RAZOR_DIFF_ACTION_REMOVE,
char *razor_concat(const char *s, ...) RAZOR_MALLOC RAZOR_NULL_TERMINATED;
char *razor_path_add_root(const char *path, const char *root) RAZOR_MALLOC;
+char *razor_path_from_url(const char *url) RAZOR_MALLOC;
const char *razor_system_arch(void);
struct razor_set *set;
struct razor_package_iterator *pi;
struct razor_package *package;
+ struct razor_string_iterator *si;
const char *pattern, *name, *version, *arch;
const char *summary, *description, *url, *license;
+ const char *prefix;
switch (razor_getopt(argc, argv, 0, NULL, "[pattern]", NULL)) {
case -2:
if (pattern && fnmatch(pattern, name, 0) != 0)
continue;
+ printf ("Name: %s\n", name);
+ printf ("Arch: %s\n", arch);
+ printf ("Version: %s\n", version);
+
+ si = razor_install_prefix_iterator_create(set, package);
+ if (razor_string_iterator_next(si, &prefix)) {
+ printf ("Relocations: %s\n", prefix);
+ while (razor_string_iterator_next(si, &prefix))
+ printf (" : %s\n", prefix);
+ }
+ razor_string_iterator_destroy(si);
+
razor_package_get_details (set, package,
RAZOR_DETAIL_SUMMARY, &summary,
RAZOR_DETAIL_DESCRIPTION, &description,
RAZOR_DETAIL_LICENSE, &license,
RAZOR_DETAIL_LAST);
- printf ("Name: %s\n", name);
- printf ("Arch: %s\n", arch);
- printf ("Version: %s\n", version);
printf ("URL: %s\n", url);
printf ("License: %s\n", license);
printf ("Summary: %s\n", summary);