rpm-razor.c
changeset 217 bf5d87af3e1e
parent 216 b97c130460a5
child 218 9aed412ed2b8
     1.1 --- a/rpm-razor.c	Wed Jun 04 13:27:49 2008 -0400
     1.2 +++ b/rpm-razor.c	Wed Jun 04 15:04:45 2008 -0400
     1.3 @@ -39,7 +39,7 @@
     1.4  };
     1.5  
     1.6  static int option_all, option_whatrequires, option_whatprovides;
     1.7 -
     1.8 +static int option_package;
     1.9  
    1.10  static const struct option query_options[] = {
    1.11  	{ OPTION_BOOL, "configfiles", 'c', NULL, "list all configuration files", NULL },
    1.12 @@ -51,7 +51,7 @@
    1.13  	{ OPTION_BOOL, "all", 'a', NULL, "query/verify all packages", &option_all },
    1.14  	{ OPTION_BOOL, "file", 'f', NULL, "query/verify package(s) owning file", NULL },
    1.15  	{ OPTION_BOOL, "group", 'g', NULL, "query/verify package(s) in group", NULL },
    1.16 -	{ OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", NULL },
    1.17 +	{ OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", &option_package },
    1.18  	{ OPTION_BOOL, "ftswalk", 'W', NULL, "query/verify package(s) from TOP file tree walk", NULL },
    1.19  	{ OPTION_BOOL, "pkgid", 0, NULL, "query/verify package(s) with package identifier", NULL },
    1.20  	{ OPTION_BOOL, "hdrid", 0, NULL, "query/verify package(s) with header identifier", NULL },
    1.21 @@ -328,6 +328,28 @@
    1.22  	razor_property_iterator_destroy(pi);
    1.23  }
    1.24  
    1.25 +static struct razor_set *
    1.26 +create_set_from_command_line(int argc, const char *argv[])
    1.27 +{
    1.28 +	struct razor_importer *importer;
    1.29 +	struct razor_rpm *rpm;
    1.30 +	int i;
    1.31 +
    1.32 +	importer = razor_importer_new();
    1.33 +
    1.34 +	for (i = 0; i < argc; i++) {
    1.35 +		rpm = razor_rpm_open(argv[i]);
    1.36 +		if (rpm == NULL)
    1.37 +			continue;
    1.38 +		if (razor_importer_add_rpm(importer, rpm))
    1.39 +			printf("couldn't import %s\n", argv[i]);
    1.40 +
    1.41 +		razor_rpm_close(rpm);
    1.42 +	}
    1.43 +
    1.44 +	return razor_importer_finish(importer);
    1.45 +}
    1.46 +
    1.47  static void
    1.48  command_query(int argc, const char *argv[])
    1.49  {
    1.50 @@ -337,7 +359,13 @@
    1.51  	struct razor_package_query *query;
    1.52  	const char *name, *version, *arch;
    1.53  
    1.54 -	set = razor_set_open(repo_filename);
    1.55 +	if (option_package) {
    1.56 +		set = create_set_from_command_line(argc, argv);
    1.57 +		argc = 0;
    1.58 +		option_all = 1;
    1.59 +	} else {
    1.60 +		set = razor_set_open(repo_filename);
    1.61 +	}
    1.62  
    1.63  	if (option_all + option_whatprovides + option_whatrequires > 1) {
    1.64  		printf("only one type of query/verify "