1.1 --- a/librazor/razor.h Mon Jun 23 20:20:08 2008 -0400
1.2 +++ b/librazor/razor.h Mon Jun 23 20:48:48 2008 -0400
1.3 @@ -120,6 +120,15 @@
1.4 struct razor_package_iterator *
1.5 razor_package_iterator_create_for_property(struct razor_set *set,
1.6 struct razor_property *property);
1.7 +
1.8 +/**
1.9 + * razor_package_iterator_create_for_file:
1.10 + *
1.11 + * Create a new #razor_package_iterator object for the packages that
1.12 + * contain the given file name.
1.13 + *
1.14 + * Returns: the new #razor_package_iterator object.
1.15 + **/
1.16 struct razor_package_iterator *
1.17 razor_package_iterator_create_for_file(struct razor_set *set,
1.18 const char *filename);
2.1 --- a/src/rpm.c Mon Jun 23 20:20:08 2008 -0400
2.2 +++ b/src/rpm.c Mon Jun 23 20:48:48 2008 -0400
2.3 @@ -51,7 +51,7 @@
2.4 * what else in on the command line. */
2.5
2.6 static int option_all, option_list, option_whatrequires, option_whatprovides;
2.7 -static int option_package;
2.8 +static int option_package, option_file;
2.9
2.10 static const struct option query_options[] = {
2.11 { OPTION_BOOL, "configfiles", 'c', NULL, "list all configuration files", NULL },
2.12 @@ -61,7 +61,7 @@
2.13 { OPTION_STRING, "queryformat", 0, "QUERYFORMAT", "use the following query format", NULL },
2.14 { OPTION_BOOL, "state", 's', NULL, "display the states of the listed files", NULL },
2.15 { OPTION_BOOL, "all", 'a', NULL, "query/verify all packages", &option_all },
2.16 - { OPTION_BOOL, "file", 'f', NULL, "query/verify package(s) owning file", NULL },
2.17 + { OPTION_BOOL, "file", 'f', NULL, "query/verify package(s) owning file", &option_file },
2.18 { OPTION_BOOL, "group", 'g', NULL, "query/verify package(s) in group", NULL },
2.19 { OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", &option_package },
2.20 { OPTION_BOOL, "ftswalk", 'W', NULL, "query/verify package(s) from TOP file tree walk", NULL },
2.21 @@ -84,7 +84,7 @@
2.22 { OPTION_BOOL, "nodeps", 0, NULL, "don't verify package dependencies", &option_nodeps },
2.23 { OPTION_BOOL, "noscript", 0, NULL, "don't execute verify script(s)", NULL, },
2.24 { OPTION_BOOL, "all", 'a', NULL, "query/verify all packages", &option_all },
2.25 - { OPTION_BOOL, "file", 'f', NULL, "query/verify package(s) owning file", NULL },
2.26 + { OPTION_BOOL, "file", 'f', NULL, "query/verify package(s) owning file", &option_file },
2.27 { OPTION_BOOL, "group", 'g', NULL, "query/verify package(s) in group", NULL },
2.28 { OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", &option_package },
2.29 { OPTION_BOOL, "ftswalk", 'W', NULL, "query/verify package(s) from TOP file tree walk", NULL },
2.30 @@ -338,14 +338,20 @@
2.31 {
2.32 struct razor_package_query *query;
2.33 struct razor_package_iterator *pi;
2.34 + char *files;
2.35 int i;
2.36
2.37 - if (option_all + option_whatprovides + option_whatrequires > 1) {
2.38 + if (option_all + option_whatprovides + option_whatrequires +
2.39 + option_file > 1) {
2.40 printf("only one type of query/verify "
2.41 "may be performed at a time\n");
2.42 exit(1);
2.43 }
2.44
2.45 + files = "install/var/lib/razor/system-files.repo";
2.46 + if (option_file)
2.47 + razor_set_open_files(set, files);
2.48 +
2.49 query = razor_package_query_create(set);
2.50
2.51 if (option_all) {
2.52 @@ -362,6 +368,13 @@
2.53 add_property_packages(set, query,
2.54 argv[i], NULL,
2.55 RAZOR_PROPERTY_PROVIDES);
2.56 + } else if (option_file) {
2.57 + for (i = 0; i < argc; i++) {
2.58 + pi = razor_package_iterator_create_for_file(set,
2.59 + argv[i]);
2.60 + razor_package_query_add_iterator(query, pi);
2.61 + razor_package_iterator_destroy(pi);
2.62 + }
2.63 } else if (argc > 0) {
2.64 add_command_line_packages(set, query, argc, argv);
2.65 } else {