Imported Upstream version 0.7.5
[platform/upstream/libsolv.git] / tools / deb2solv.c
index 0d22f24..4fac3f0 100644 (file)
@@ -15,6 +15,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h>
+#include <getopt.h>
 
 #include "util.h"
 #include "pool.h"
@@ -57,18 +58,18 @@ main(int argc, char **argv)
   Repo *repo;
   FILE *fp;
   char buf[4096], *p;
-  const char *basefile = 0;
+  int is_repo = 0;
 
-  while ((c = getopt(argc, argv, "0b:m:")) >= 0)
+  while ((c = getopt(argc, argv, "0:m:r")) >= 0)
     {
       switch(c)
        {
-       case 'b':
-         basefile = optarg;
-         break;
        case 'm':
          manifest = optarg;
          break;
+       case 'r':
+         is_repo = 1;
+         break;
        case '0':
          manifest0 = 1;
          break;
@@ -113,8 +114,32 @@ main(int argc, char **argv)
   repo = repo_create(pool, "deb2solv");
   repo_add_repodata(repo, 0);
   res = 0;
+  if (!ndebs && !manifest && is_repo)
+    {
+      if (repo_add_debpackages(repo, stdin, REPO_REUSE_REPODATA|REPO_NO_INTERNALIZE))
+       {
+         fprintf(stderr, "deb2solv: %s\n", pool_errstr(pool));
+         res = 1;
+       }
+    }
   for (i = 0; i < ndebs; i++)
     {
+      if (is_repo)
+       {
+         if ((fp = fopen(debs[i], "r")) == 0)
+           {
+             perror(debs[i]);
+             res = 1;
+             continue;
+           }
+         if (repo_add_debpackages(repo, fp, REPO_REUSE_REPODATA|REPO_NO_INTERNALIZE))
+           {
+             fprintf(stderr, "deb2solv: %s\n", pool_errstr(pool));
+             res = 1;
+           }
+         fclose(fp);
+         continue;
+       }
       if (repo_add_deb(repo, debs[i], REPO_REUSE_REPODATA|REPO_NO_INTERNALIZE) == 0)
        {
          fprintf(stderr, "deb2solv: %s\n", pool_errstr(pool));
@@ -122,7 +147,7 @@ main(int argc, char **argv)
        }
     }
   repo_internalize(repo);
-  tool_write(repo, basefile, 0);
+  tool_write(repo, stdout);
   pool_free(pool);
   for (c = 0; c < ndebs; c++)
     free((char *)debs[c]);