From: Kristian Høgsberg Date: Wed, 4 Jun 2008 18:57:14 +0000 (-0400) Subject: Implement the rpm --package option. X-Git-Tag: 0.1~147 X-Git-Url: http://project.juiblex.co.uk/git/?a=commitdiff_plain;h=74d4119790d83eaf1dd2f2b33cf91fa0adc68f29;p=razor.git Implement the rpm --package option. --- diff --git a/Makefile b/Makefile index add6e80..f2dd346 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ razor.o : types.h test-driver : razor.o types.o util.o test-driver.o -rpm-razor : rpm-razor.o razor.o types.o util.o +rpm-razor : rpm-razor.o razor.o types.o util.o rpm.o test : test-driver ./test-driver test.xml diff --git a/rpm-razor.c b/rpm-razor.c index e0d3bad..1132114 100644 --- a/rpm-razor.c +++ b/rpm-razor.c @@ -39,7 +39,7 @@ struct option { }; static int option_all, option_whatrequires, option_whatprovides; - +static int option_package; static const struct option query_options[] = { { OPTION_BOOL, "configfiles", 'c', NULL, "list all configuration files", NULL }, @@ -51,7 +51,7 @@ static const struct option query_options[] = { { OPTION_BOOL, "all", 'a', NULL, "query/verify all packages", &option_all }, { OPTION_BOOL, "file", 'f', NULL, "query/verify package(s) owning file", NULL }, { OPTION_BOOL, "group", 'g', NULL, "query/verify package(s) in group", NULL }, - { OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", NULL }, + { OPTION_BOOL, "package", 'p', NULL, "query/verify a package file", &option_package }, { OPTION_BOOL, "ftswalk", 'W', NULL, "query/verify package(s) from TOP file tree walk", NULL }, { OPTION_BOOL, "pkgid", 0, NULL, "query/verify package(s) with package identifier", NULL }, { OPTION_BOOL, "hdrid", 0, NULL, "query/verify package(s) with header identifier", NULL }, @@ -328,6 +328,28 @@ print_package_properties(struct razor_set *set, razor_property_iterator_destroy(pi); } +static struct razor_set * +create_set_from_command_line(int argc, const char *argv[]) +{ + struct razor_importer *importer; + struct razor_rpm *rpm; + int i; + + importer = razor_importer_new(); + + for (i = 0; i < argc; i++) { + rpm = razor_rpm_open(argv[i]); + if (rpm == NULL) + continue; + if (razor_importer_add_rpm(importer, rpm)) + printf("couldn't import %s\n", argv[i]); + + razor_rpm_close(rpm); + } + + return razor_importer_finish(importer); +} + static void command_query(int argc, const char *argv[]) { @@ -337,7 +359,13 @@ command_query(int argc, const char *argv[]) struct razor_package_query *query; const char *name, *version, *arch; - set = razor_set_open(repo_filename); + if (option_package) { + set = create_set_from_command_line(argc, argv); + argc = 0; + option_all = 1; + } else { + set = razor_set_open(repo_filename); + } if (option_all + option_whatprovides + option_whatrequires > 1) { printf("only one type of query/verify "