Add read-only open function for razor_root and support --root in rpm wrapper.
authorKristian Høgsberg <krh@redhat.com>
Tue, 10 Jun 2008 02:41:37 +0000 (22:41 -0400)
committerKristian Høgsberg <krh@redhat.com>
Tue, 10 Jun 2008 02:41:37 +0000 (22:41 -0400)
razor-root.c
razor.h
rpm-razor.c

index cfbf59b..fafbcc2 100644 (file)
@@ -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 (file)
--- 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);
index 6b1e81b..55ca92f 100644 (file)
@@ -20,6 +20,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
+#include <dirent.h>
 #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, "<FILE:...>", "read <FILE:...> 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);