From: Kristian Høgsberg Date: Tue, 10 Jun 2008 02:41:37 +0000 (-0400) Subject: Add read-only open function for razor_root and support --root in rpm wrapper. X-Git-Tag: 0.1~135 X-Git-Url: http://project.juiblex.co.uk/git/?a=commitdiff_plain;h=c9e94d69988072fa8f5e4e014e2d5b0a5c0e236f;p=razor2.git%2F.git Add read-only open function for razor_root and support --root in rpm wrapper. --- diff --git a/razor-root.c b/razor-root.c index cfbf59b..fafbcc2 100644 --- a/razor-root.c +++ b/razor-root.c @@ -107,6 +107,17 @@ razor_root_open(const char *root, int flags) return image; } +struct razor_set * +razor_root_open_read_only(const char *root) +{ + char path[PATH_MAX]; + + snprintf(path, sizeof path, "%s%s/%s", + root, razor_root_path, system_repo_filename); + + return razor_set_open(path); +} + struct razor_transaction * razor_root_create_transaction(struct razor_root *image, struct razor_set *upstream) diff --git a/razor.h b/razor.h index 3177fb4..aa1794f 100644 --- a/razor.h +++ b/razor.h @@ -118,6 +118,7 @@ void razor_transaction_update_package(struct razor_transaction *trans, struct razor_package *package); void razor_transaction_update_all(struct razor_transaction *transaction); int razor_transaction_resolve(struct razor_transaction *trans); +void razor_transaction_describe(struct razor_transaction *trans); struct razor_set *razor_transaction_finish(struct razor_transaction *trans); void razor_transaction_destroy(struct razor_transaction *trans); @@ -175,6 +176,7 @@ struct razor_root; int razor_root_create(const char *root); struct razor_root *razor_root_open(const char *root, int flags); +struct razor_set *razor_root_open_read_only(const char *root); struct razor_transaction * razor_root_create_transaction(struct razor_root *image, struct razor_set *upstream); diff --git a/rpm-razor.c b/rpm-razor.c index 6b1e81b..55ca92f 100644 --- a/rpm-razor.c +++ b/rpm-razor.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "razor.h" enum option_type { @@ -163,6 +164,7 @@ static const struct option install_options[] = { }; static int option_version; +static const char *option_root = "install"; static const struct option common_options[] = { { OPTION_STRING, "define", 'D', "MACRO EXPR", "define MACRO with value EXPR", NULL, }, @@ -171,7 +173,7 @@ static const struct option common_options[] = { { OPTION_BOOL, "nodigest", 0, NULL, "don't verify package digest(s)", NULL, }, { OPTION_BOOL, "nosignature", 0, NULL, "don't verify package signature(s)", NULL, }, { OPTION_STRING, "rcfile", 0, "", "read instead of default file(s)", NULL }, - { OPTION_STRING, "root", 'r', "ROOT", "use ROOT as top level directory (default: \"/\")", NULL }, + { OPTION_STRING, "root", 'r', "ROOT", "use ROOT as top level directory (default: \"/\")", &option_root }, { OPTION_BOOL, "querytags", 0, NULL, "display known query tags", NULL, }, { OPTION_BOOL, "showrc", 0, NULL, "display final rpmrc and macro configuration", NULL, }, { OPTION_BOOL, "quiet", 0, NULL, "provide less detailed output", NULL }, @@ -240,12 +242,11 @@ static const struct option rpm_options[] = { static const char system_repo_filename[] = "system.repo"; static const char *repo_filename = system_repo_filename; -static const char install_root[] = "install"; static void command_initdb(int argc, const char *argv[]) { - razor_root_create(install_root); + razor_root_create(option_root); } static struct razor_property * @@ -434,7 +435,7 @@ command_query(int argc, const char *argv[]) argc = 0; option_all = 1; } else { - set = razor_set_open(repo_filename); + set = razor_root_open_read_only(option_root); } pi = get_query_packages(set, argc, argv); @@ -484,7 +485,7 @@ command_verify(int argc, const char *argv[]) argc = 0; option_all = 1; } else { - set = razor_set_open(repo_filename); + set = razor_root_open_read_only(option_root); } pi = get_query_packages(set, argc, argv);