Implement the rpm --package option.
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 "