1.1 --- a/librazor/razor.c Mon Jan 12 17:54:13 2009 +0000
1.2 +++ b/librazor/razor.c Thu Mar 12 20:23:35 2009 +0000
1.3 @@ -582,76 +582,22 @@
1.4 list_dir(set, e, buffer, base);
1.5 }
1.6
1.7 -static struct list *
1.8 -list_package_files(struct razor_set *set, struct list *r,
1.9 - struct razor_entry *dir, uint32_t end,
1.10 - char *prefix)
1.11 -{
1.12 - struct razor_entry *e, *f, *entries;
1.13 - uint32_t next, file;
1.14 - char *pool;
1.15 - int len;
1.16 -
1.17 - entries = (struct razor_entry *) set->files.data;
1.18 - pool = set->file_string_pool.data;
1.19 -
1.20 - e = entries + dir->start;
1.21 - do {
1.22 - if (entries + r->data == e) {
1.23 - printf("%s/%s\n", prefix, pool + e->name);
1.24 - r = list_next(r);
1.25 - if (!r)
1.26 - return NULL;
1.27 - if (r->data >= end)
1.28 - return r;
1.29 - }
1.30 - } while (!((e++)->flags & RAZOR_ENTRY_LAST));
1.31 -
1.32 - e = entries + dir->start;
1.33 - do {
1.34 - if (e->start == 0)
1.35 - continue;
1.36 -
1.37 - if (e->flags & RAZOR_ENTRY_LAST)
1.38 - next = end;
1.39 - else {
1.40 - f = e + 1;
1.41 - while (f->start == 0 && !(f->flags & RAZOR_ENTRY_LAST))
1.42 - f++;
1.43 - if (f->start == 0)
1.44 - next = end;
1.45 - else
1.46 - next = f->start;
1.47 - }
1.48 -
1.49 - file = r->data;
1.50 - if (e->start <= file && file < next) {
1.51 - len = strlen(prefix);
1.52 - prefix[len] = '/';
1.53 - strcpy(prefix + len + 1, pool + e->name);
1.54 - r = list_package_files(set, r, e, next, prefix);
1.55 - prefix[len] = '\0';
1.56 - }
1.57 - } while (!((e++)->flags & RAZOR_ENTRY_LAST) && r != NULL);
1.58 -
1.59 - return r;
1.60 -}
1.61 -
1.62 RAZOR_EXPORT void
1.63 razor_set_list_package_files(struct razor_set *set,
1.64 struct razor_package *package)
1.65 {
1.66 - struct list *r;
1.67 - uint32_t end;
1.68 - char buffer[512];
1.69 + struct razor_file_iterator *fi;
1.70 + const char *name;
1.71
1.72 assert (set != NULL);
1.73 assert (package != NULL);
1.74
1.75 - r = list_first(&package->files, &set->file_pool);
1.76 - end = set->files.size / sizeof (struct razor_entry);
1.77 - buffer[0] = '\0';
1.78 - list_package_files(set, r, set->files.data, end, buffer);
1.79 + fi = razor_file_iterator_create(set, package);
1.80 +
1.81 + while (razor_file_iterator_next(fi, &name))
1.82 + printf("%s\n", name);
1.83 +
1.84 + razor_file_iterator_destroy(fi);
1.85 }
1.86
1.87 /* The diff order matters. We should sort the packages so that a