diff options
Diffstat (limited to 'metadata/meta-get-tree.c')
-rw-r--r-- | metadata/meta-get-tree.c | 59 |
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; +} |