Implement the rpm --package option.
authorKristian H?gsberg <krh@redhat.com>
Wed Jun 04 15:04:45 2008 -0400 (2008-06-04)
changeset 217bf5d87af3e1e
parent 216 b97c130460a5
child 218 9aed412ed2b8
Implement the rpm --package option.
Makefile
rpm-razor.c
     1.1 --- a/Makefile	Wed Jun 04 13:27:49 2008 -0400
     1.2 +++ b/Makefile	Wed Jun 04 15:04:45 2008 -0400
     1.3 @@ -10,7 +10,7 @@
     1.4  
     1.5  test-driver : razor.o types.o util.o test-driver.o
     1.6  
     1.7 -rpm-razor : rpm-razor.o razor.o types.o util.o
     1.8 +rpm-razor : rpm-razor.o razor.o types.o util.o rpm.o
     1.9  
    1.10  test : test-driver
    1.11  	./test-driver test.xml
     2.1 --- a/rpm-razor.c	Wed Jun 04 13:27:49 2008 -0400
     2.2 +++ b/rpm-razor.c	Wed Jun 04 15:04:45 2008 -0400
     2.3 @@ -39,7 +39,7 @@
     2.4  };
     2.5  
     2.6  static int option_all, option_whatrequires, option_whatprovides;
     2.7 -
     2.8 +static int option_package;
     2.9  
    2.10  static const struct option query_options[] = {
    2.11  	{ OPTION_BOOL, "configfiles", 'c', NULL, "list all configuration files", NULL },
    2.12 @@ -51,7 +51,7 @@
    2.13  	{ OPTION_BOOL, "all", 'a', NULL, "query/verify all packages", &option_all },
    2.14  	{ OPTION_BOOL, "file", 'f', NULL, "query/verify package(s) owning file", NULL },
    2.15  	{ OPTION_BOOL, "group", 'g', NULL, "query/verify package(s) in group", NULL },
    2.16 -	{ OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", NULL },
    2.17 +	{ OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", &option_package },
    2.18  	{ OPTION_BOOL, "ftswalk", 'W', NULL, "query/verify package(s) from TOP file tree walk", NULL },
    2.19  	{ OPTION_BOOL, "pkgid", 0, NULL, "query/verify package(s) with package identifier", NULL },
    2.20  	{ OPTION_BOOL, "hdrid", 0, NULL, "query/verify package(s) with header identifier", NULL },
    2.21 @@ -328,6 +328,28 @@
    2.22  	razor_property_iterator_destroy(pi);
    2.23  }
    2.24  
    2.25 +static struct razor_set *
    2.26 +create_set_from_command_line(int argc, const char *argv[])
    2.27 +{
    2.28 +	struct razor_importer *importer;
    2.29 +	struct razor_rpm *rpm;
    2.30 +	int i;
    2.31 +
    2.32 +	importer = razor_importer_new();
    2.33 +
    2.34 +	for (i = 0; i < argc; i++) {
    2.35 +		rpm = razor_rpm_open(argv[i]);
    2.36 +		if (rpm == NULL)
    2.37 +			continue;
    2.38 +		if (razor_importer_add_rpm(importer, rpm))
    2.39 +			printf("couldn't import %s\n", argv[i]);
    2.40 +
    2.41 +		razor_rpm_close(rpm);
    2.42 +	}
    2.43 +
    2.44 +	return razor_importer_finish(importer);
    2.45 +}
    2.46 +
    2.47  static void
    2.48  command_query(int argc, const char *argv[])
    2.49  {
    2.50 @@ -337,7 +359,13 @@
    2.51  	struct razor_package_query *query;
    2.52  	const char *name, *version, *arch;
    2.53  
    2.54 -	set = razor_set_open(repo_filename);
    2.55 +	if (option_package) {
    2.56 +		set = create_set_from_command_line(argc, argv);
    2.57 +		argc = 0;
    2.58 +		option_all = 1;
    2.59 +	} else {
    2.60 +		set = razor_set_open(repo_filename);
    2.61 +	}
    2.62  
    2.63  	if (option_all + option_whatprovides + option_whatrequires > 1) {
    2.64  		printf("only one type of query/verify "