librazor/razor.c
changeset 356 d842feb64ecb
parent 345 edd9b0fa63ca
child 359 c9c90315ea24
     1.1 --- a/librazor/razor.c	Mon Jan 12 17:54:13 2009 +0000
     1.2 +++ b/librazor/razor.c	Thu Mar 12 20:52:12 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