razor.c
changeset 102 337a7a55e2c6
parent 101 9708f6d5db8c
child 103 1d584c5af737
     1.1 --- a/razor.c	Thu Jan 17 23:28:37 2008 -0500
     1.2 +++ b/razor.c	Thu Jan 17 23:36:12 2008 -0500
     1.3 @@ -1161,31 +1161,24 @@
     1.4  		list_dir(set, e, buffer, base);
     1.5  }
     1.6  
     1.7 -void
     1.8 -razor_set_list_file_packages(struct razor_set *set, const char *filename)
     1.9 +struct razor_package_iterator *
    1.10 +razor_package_iterator_create_for_file(struct razor_set *set,
    1.11 +				       const char *filename)
    1.12  {
    1.13 -	struct razor_entry *e;
    1.14 -	struct razor_package *packages, *p;
    1.15 -	const char *pool;
    1.16 -	unsigned long *r;
    1.17 +	struct razor_entry *entry;
    1.18 +	unsigned long *index;
    1.19  
    1.20 -	e = find_entry(set, set->files.data, filename);
    1.21 -	if (e == NULL)
    1.22 -		return;
    1.23 +	entry = find_entry(set, set->files.data, filename);
    1.24 +	if (entry == NULL)
    1.25 +		return NULL;
    1.26  	
    1.27 -	if (e->packages & RAZOR_IMMEDIATE)
    1.28 -		r = &e->packages;
    1.29 +	if (entry->packages & RAZOR_IMMEDIATE)
    1.30 +		index = &entry->packages;
    1.31  	else
    1.32 -		r = (unsigned long *) set->package_pool.data + e->packages;
    1.33 +		index = (unsigned long *)
    1.34 +			set->package_pool.data + entry->packages;
    1.35  
    1.36 -	packages = set->packages.data;
    1.37 -	pool = set->string_pool.data;
    1.38 -	while (1) {
    1.39 -		p = &packages[*r & RAZOR_ENTRY_MASK];
    1.40 -		printf("%s-%s\n", &pool[p->name], &pool[p->version]);
    1.41 -		if (*r++ & RAZOR_IMMEDIATE)
    1.42 -			break;
    1.43 -	}
    1.44 +	return razor_package_iterator_create_with_index(set, index);
    1.45  }
    1.46  
    1.47  static unsigned long *