summaryrefslogtreecommitdiff
path: root/metadata/meta-get-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'metadata/meta-get-tree.c')
-rw-r--r--metadata/meta-get-tree.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/metadata/meta-get-tree.c b/metadata/meta-get-tree.c
new file mode 100644
index 00000000..bfe911ba
--- /dev/null
+++ b/metadata/meta-get-tree.c
@@ -0,0 +1,59 @@
+#include "config.h"
+#include "metatree.h"
+#include <glib/gstdio.h>
+
+/*static gboolean recursive = FALSE;*/
+static gboolean verbose = FALSE;
+static gboolean pause = FALSE;
+static GOptionEntry entries[] =
+{
+ { "verbose", 'l', 0, G_OPTION_ARG_NONE, &verbose, "Verbose", NULL },
+ { "pause", 'p', 0, G_OPTION_ARG_NONE, &pause, "Pause", NULL },
+ { NULL }
+};
+
+int
+main (int argc,
+ char *argv[])
+{
+ GError *error = NULL;
+ GOptionContext *context;
+ MetaLookupCache *cache;
+ MetaTree *tree;
+ char *tree_path;
+ struct stat statbuf;
+ int i;
+
+ context = g_option_context_new ("<tree file> <dir in tree> - list entries");
+ g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+ if (!g_option_context_parse (context, &argc, &argv, &error))
+ {
+ g_printerr ("option parsing failed: %s\n", error->message);
+ return 1;
+ }
+
+
+ cache = meta_lookup_cache_new ();
+
+ for (i = 1; i < argc; i++)
+ {
+ if (g_lstat (argv[i], &statbuf) != 0)
+ {
+ g_printerr ("can't stat %s\n", argv[i]);
+ return 1;
+ }
+
+ tree_path = NULL;
+ tree = meta_lookup_cache_lookup_path (cache, argv[i], statbuf.st_dev,
+ FALSE, &tree_path);
+ g_print ("tree: %s (exists: %d), tree path: %s\n", meta_tree_get_filename (tree), meta_tree_exists (tree), tree_path);
+ if (pause)
+ {
+ char buffer[1000];
+ g_print ("Pausing, press enter\n");
+ gets(buffer);
+ }
+ }
+
+ return 0;
+}