Imported Upstream version 0.6.27
[platform/upstream/libsolv.git] / tools / appdata2solv.c
index 129fbc3..ce6c98c 100644 (file)
  */
 
 #include <sys/types.h>
-#include <limits.h>
-#include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 
 #include "pool.h"
 #include "repo.h"
@@ -30,11 +29,46 @@ int
 main(int argc, char **argv)
 {
   Pool *pool = pool_create();
-  Repo *repo = repo_create(pool, "<stdin>");
-  if (repo_add_appdata(repo, stdin, 0))
+  Repo *repo;
+  int c;
+  const char *appdatadir = 0;
+  const char *root = 0;
+
+  while ((c = getopt(argc, argv, "hd:r:")) >= 0)
+    {
+      switch (c)
+       {
+       case 'd':
+         appdatadir = optarg;
+         break;
+       case 'r':
+         root = optarg;
+         break;
+       default:
+         fprintf(stderr, "usage: appdata2solv [-d appdatadir]");
+         exit(c == 'h' ? 0 : 1);
+       }
+    }
+
+  if (root)
+    pool_set_rootdir(pool, root);
+    
+  repo = repo_create(pool, "<stdin>");
+  if (!appdatadir)
+    {
+      if (repo_add_appdata(repo, stdin, 0))
+       {
+         fprintf(stderr, "appdata2solv: %s\n", pool_errstr(pool));
+         exit(1);
+       }
+    }
+  else
     {
-      fprintf(stderr, "appdata2solv: %s\n", pool_errstr(pool));
-      exit(1);
+      if (repo_add_appdata_dir(repo, appdatadir, REPO_USE_ROOTDIR))
+       {
+         fprintf(stderr, "appdata2solv: %s\n", pool_errstr(pool));
+         exit(1);
+       }
     }
   tool_write(repo, 0, 0);
   pool_free(pool);