src/main.c
changeset 306 cd3954499086
parent 305 e10b4f060a9d
child 307 95b6bcadd6c4
     1.1 --- a/src/main.c	Mon Jun 30 13:26:55 2008 -0400
     1.2 +++ b/src/main.c	Mon Jun 30 13:28:59 2008 -0400
     1.3 @@ -119,26 +119,15 @@
     1.4  	return 0;
     1.5  }
     1.6  
     1.7 -static int
     1.8 -list_properties(const char *package_name, uint32_t type)
     1.9 +static void
    1.10 +list_package_properties(struct razor_set *set,
    1.11 +			struct razor_package *package, uint32_t type)
    1.12  {
    1.13 -	struct razor_set *set;
    1.14 +	struct razor_property_iterator *pi;
    1.15  	struct razor_property *property;
    1.16 -	struct razor_package *package;
    1.17 -	struct razor_property_iterator *pi;
    1.18  	const char *name, *version;
    1.19  	uint32_t flags;
    1.20  
    1.21 -	set = razor_set_open(repo_filename);
    1.22 -	if (package_name) {
    1.23 -		package = razor_set_get_package(set, package_name);
    1.24 -		if (!package) {
    1.25 -			fprintf(stderr, "no package named \"%s\"\n", package_name);
    1.26 -			return 1;
    1.27 -		}
    1.28 -	} else
    1.29 -		package = NULL;
    1.30 -
    1.31  	pi = razor_property_iterator_create(set, package);
    1.32  	while (razor_property_iterator_next(pi, &property,
    1.33  					    &name, &flags, &version)) {
    1.34 @@ -165,7 +154,22 @@
    1.35  		printf("\n");
    1.36  	}
    1.37  	razor_property_iterator_destroy(pi);
    1.38 +}
    1.39  
    1.40 +static int
    1.41 +list_properties(int argc, const char *argv[], uint32_t type)
    1.42 +{
    1.43 +	struct razor_set *set;
    1.44 +	struct razor_package *package;
    1.45 +	struct razor_package_iterator *pi;
    1.46 +	const char *name, *version, *arch;
    1.47 +
    1.48 +	set = razor_set_open(repo_filename);
    1.49 +	pi = create_iterator_from_argv(set, argc, argv);
    1.50 +	while (razor_package_iterator_next(pi, &package,
    1.51 +					   &name, &version, &arch))
    1.52 +		list_package_properties(set, package, type);
    1.53 +	razor_package_iterator_destroy(pi);
    1.54  	razor_set_destroy(set);
    1.55  
    1.56  	return 0;
    1.57 @@ -174,25 +178,25 @@
    1.58  static int
    1.59  command_list_requires(int argc, const char *argv[])
    1.60  {
    1.61 -	return list_properties(argv[0], RAZOR_PROPERTY_REQUIRES);
    1.62 +	return list_properties(argc, argv, RAZOR_PROPERTY_REQUIRES);
    1.63  }
    1.64  
    1.65  static int
    1.66  command_list_provides(int argc, const char *argv[])
    1.67  {
    1.68 -	return list_properties(argv[0], RAZOR_PROPERTY_PROVIDES);
    1.69 +	return list_properties(argc, argv, RAZOR_PROPERTY_PROVIDES);
    1.70  }
    1.71  
    1.72  static int
    1.73  command_list_obsoletes(int argc, const char *argv[])
    1.74  {
    1.75 -	return list_properties(argv[0], RAZOR_PROPERTY_OBSOLETES);
    1.76 +	return list_properties(argc, argv, RAZOR_PROPERTY_OBSOLETES);
    1.77  }
    1.78  
    1.79  static int
    1.80  command_list_conflicts(int argc, const char *argv[])
    1.81  {
    1.82 -	return list_properties(argv[0], RAZOR_PROPERTY_CONFLICTS);
    1.83 +	return list_properties(argc, argv, RAZOR_PROPERTY_CONFLICTS);
    1.84  }
    1.85  
    1.86  static int
    1.87 @@ -237,6 +241,9 @@
    1.88  command_list_package_files(int argc, const char *argv[])
    1.89  {
    1.90  	struct razor_set *set;
    1.91 +	struct razor_package_iterator *pi;
    1.92 +	struct razor_package *package;
    1.93 +	const char *name, *version, *arch;
    1.94  
    1.95  	set = razor_set_open(repo_filename);
    1.96  	if (set == NULL)
    1.97 @@ -244,7 +251,12 @@
    1.98  	if (razor_set_open_files(set, "system-files.repo"))
    1.99  		return 1;
   1.100  
   1.101 -	razor_set_list_package_files(set, argv[0]);
   1.102 +	pi = create_iterator_from_argv(set, argc, argv);
   1.103 +	while (razor_package_iterator_next(pi, &package,
   1.104 +					   &name, &version, &arch))
   1.105 +		razor_set_list_package_files(set, package);
   1.106 +	razor_package_iterator_destroy(pi);
   1.107 +
   1.108  	razor_set_destroy(set);
   1.109  
   1.110  	return 0;