rpm-razor.c
changeset 222 052dce887a07
parent 221 6db5f1ad7882
child 230 c1e2aed8dd07
     1.1 --- a/rpm-razor.c	Wed Jun 04 21:06:09 2008 -0400
     1.2 +++ b/rpm-razor.c	Wed Jun 04 21:28:26 2008 -0400
     1.3 @@ -77,10 +77,10 @@
     1.4  	{ OPTION_BOOL, "nofiles", 0, NULL, "don't verify files in package", NULL },
     1.5  	{ OPTION_BOOL, "nodeps", 0, NULL, "don't verify package dependencies", NULL },
     1.6  	{ OPTION_BOOL, "noscript", 0, NULL, "don't execute verify script(s)", NULL, },
     1.7 -	{ OPTION_BOOL, "all", 'a', NULL, "query/verify all packages", &option_al },
     1.8 +	{ OPTION_BOOL, "all", 'a', NULL, "query/verify all packages", &option_all },
     1.9  	{ OPTION_BOOL, "file", 'f', NULL, "query/verify package(s) owning file", NULL },
    1.10  	{ OPTION_BOOL, "group", 'g', NULL, "query/verify package(s) in group", NULL },
    1.11 -	{ OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", NULL },
    1.12 +	{ OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", &option_package },
    1.13  	{ OPTION_BOOL, "ftswalk", 'W', NULL, "query/verify package(s) from TOP file tree walk", NULL },
    1.14  	{ OPTION_BOOL, "pkgid", 0, NULL, "query/verify package(s) with package identifier", NULL },
    1.15  	{ OPTION_BOOL, "hdrid", 0, NULL, "query/verify package(s) with header identifier", NULL },
    1.16 @@ -311,6 +311,45 @@
    1.17  	razor_package_iterator_destroy(pi);
    1.18  }
    1.19  
    1.20 +static struct razor_package_iterator *
    1.21 +get_query_packages(struct razor_set *set, int argc, const char *argv[])
    1.22 +{
    1.23 +	struct razor_package_query *query;
    1.24 +	struct razor_package_iterator *pi;
    1.25 +	int i;
    1.26 +
    1.27 +	if (option_all + option_whatprovides + option_whatrequires > 1) {
    1.28 +		printf("only one type of query/verify "
    1.29 +		       "may be performed at a time\n");
    1.30 +		exit(1);
    1.31 +	}
    1.32 +
    1.33 +	query = razor_package_query_create(set);
    1.34 +
    1.35 +	if (option_all) {
    1.36 +		pi = razor_package_iterator_create(set);
    1.37 +		razor_package_query_add_iterator(query, pi);
    1.38 +		razor_package_iterator_destroy(pi);
    1.39 +	} else if (option_whatrequires) {
    1.40 +		for (i = 0; i < argc; i++)
    1.41 +			add_property_packages(set, query,
    1.42 +					      argv[i], NULL,
    1.43 +					      RAZOR_PROPERTY_REQUIRES);
    1.44 +	} else if (option_whatprovides) {
    1.45 +		for (i = 0; i < argc; i++)
    1.46 +			add_property_packages(set, query,
    1.47 +					      argv[i], NULL,
    1.48 +					      RAZOR_PROPERTY_PROVIDES);
    1.49 +	} else if (argc > 0) {
    1.50 +		add_command_line_packages(set, query, argc, argv);
    1.51 +	} else {
    1.52 +		printf("no arguments given for query/verify\n");
    1.53 +		exit(1);
    1.54 +	}
    1.55 +
    1.56 +	return razor_package_query_finish(query);
    1.57 +}
    1.58 +
    1.59  static void
    1.60  print_package_properties(struct razor_set *set,
    1.61  			 struct razor_package *package,
    1.62 @@ -377,7 +416,6 @@
    1.63  	struct razor_set *set;
    1.64  	struct razor_package_iterator *pi;
    1.65  	struct razor_package *package;
    1.66 -	struct razor_package_query *query;
    1.67  	const char *name, *version, *arch;
    1.68  
    1.69  	if (option_package) {
    1.70 @@ -388,31 +426,7 @@
    1.71  		set = razor_set_open(repo_filename);
    1.72  	}
    1.73  
    1.74 -	if (option_all + option_whatprovides + option_whatrequires > 1) {
    1.75 -		printf("only one type of query/verify "
    1.76 -		       "may be performed at a time\n");
    1.77 -		exit(1);
    1.78 -	}
    1.79 -
    1.80 -	query = razor_package_query_create(set);
    1.81 -	if (option_all) {
    1.82 -		pi = razor_package_iterator_create(set);
    1.83 -		razor_package_query_add_iterator(query, pi);
    1.84 -		razor_package_iterator_destroy(pi);
    1.85 -	} else if (option_whatrequires) {
    1.86 -		add_property_packages(set, query,
    1.87 -				      argv[0], NULL, RAZOR_PROPERTY_REQUIRES);
    1.88 -	} else if (option_whatprovides) {
    1.89 -		add_property_packages(set, query,
    1.90 -				      argv[0], NULL, RAZOR_PROPERTY_PROVIDES);
    1.91 -	} else if (argc > 0) {
    1.92 -		add_command_line_packages(set, query, argc, argv);
    1.93 -	} else {
    1.94 -		printf("no arguments given for query\n");
    1.95 -		exit(1);
    1.96 -	}
    1.97 -
    1.98 -	pi = razor_package_query_finish(query);
    1.99 +	pi = get_query_packages(set, argc, argv);
   1.100  
   1.101  	while (razor_package_iterator_next(pi, &package,
   1.102  					   &name, &version, &arch)) {
   1.103 @@ -449,12 +463,28 @@
   1.104  static void
   1.105  command_verify(int argc, const char *argv[])
   1.106  {
   1.107 -	if (argc == 0) {
   1.108 -		printf("no arguments given for verify\n");
   1.109 -		exit(1);
   1.110 +	struct razor_set *set;
   1.111 +	struct razor_package_iterator *pi;
   1.112 +	struct razor_package *package;
   1.113 +	const char *name, *version, *arch;
   1.114 +
   1.115 +	if (option_package) {
   1.116 +		set = create_set_from_command_line(argc, argv);
   1.117 +		argc = 0;
   1.118 +		option_all = 1;
   1.119 +	} else {
   1.120 +		set = razor_set_open(repo_filename);
   1.121  	}
   1.122  
   1.123 -	printf("command verify - not implemented\n");
   1.124 +	pi = get_query_packages(set, argc, argv);
   1.125 +
   1.126 +	while (razor_package_iterator_next(pi, &package,
   1.127 +					   &name, &version, &arch)) {
   1.128 +		printf("verify %s-%s.%s - not implemented\n",
   1.129 +		       name, version, arch);
   1.130 +	}
   1.131 +
   1.132 +	razor_package_iterator_destroy(pi);
   1.133  }
   1.134  
   1.135  static void