X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tools%2Frpmmd2solv.c;h=ad75025ea419abe36902c0c59d8d2c36061b30ff;hb=4ddbcf346d1185bacbe63dba6e9317424b5206b9;hp=b1f9e3e75dabb9f5645fd1089592d9f50cc6f3b1;hpb=09f29f706df0cf171ba7e7e8a3272388039630e4;p=platform%2Fupstream%2Flibsolv.git diff --git a/tools/rpmmd2solv.c b/tools/rpmmd2solv.c index b1f9e3e..ad75025 100644 --- a/tools/rpmmd2solv.c +++ b/tools/rpmmd2solv.c @@ -8,17 +8,17 @@ #define _GNU_SOURCE #include -#include -#include #include #include #include #include -#include #include "pool.h" #include "repo.h" #include "repo_rpmmd.h" +#ifdef SUSE +#include "repo_autopattern.h" +#endif #include "common_write.h" #include "solv_xfopen.h" @@ -27,11 +27,9 @@ static void usage(int status) { fprintf(stderr, "\nUsage:\n" - "rpmmd2solv [-a][-h][-n ][-l ]\n" + "rpmmd2solv [-h]\n" " reads 'primary' from a 'rpmmd' repository from and writes a .solv file to \n" " -h : print help & exit\n" - " -n : save attributes as .attr\n" - " -l : parse localization data for \n" ); exit(status); } @@ -39,92 +37,41 @@ usage(int status) int main(int argc, char **argv) { - int c, flags = 0; - const char *attrname = 0; - const char *basefile = 0; - const char *dir = 0; - const char *locale = 0; + int c; +#ifdef SUSE + int add_auto = 0; +#endif Pool *pool = pool_create(); Repo *repo = repo_create(pool, ""); - while ((c = getopt (argc, argv, "hn:b:d:l:")) >= 0) + while ((c = getopt (argc, argv, "hX")) >= 0) { - switch(c) + switch (c) { case 'h': usage(0); break; - case 'n': - attrname = optarg; - break; - case 'b': - basefile = optarg; - break; - case 'd': - dir = optarg; - break; - case 'l': - locale = optarg; + case 'X': +#ifdef SUSE + add_auto = 1; +#endif break; default: usage(1); break; } } - if (dir) + if (repo_add_rpmmd(repo, stdin, 0, 0)) { - FILE *fp; - int l; - char *fnp; - l = strlen(dir) + 128; - fnp = solv_malloc(l+1); - snprintf(fnp, l, "%s/primary.xml.gz", dir); - if (!(fp = solv_xfopen(fnp, 0))) - { - perror(fnp); - exit(1); - } - repo_add_rpmmd(repo, fp, 0, flags); - fclose(fp); - snprintf(fnp, l, "%s/diskusagedata.xml.gz", dir); - if ((fp = solv_xfopen(fnp, 0))) - { - repo_add_rpmmd(repo, fp, 0, flags); - fclose(fp); - } - if (locale) - { - if (snprintf(fnp, l, "%s/translation-%s.xml.gz", dir, locale) >= l) - { - fprintf(stderr, "-l parameter too long\n"); - exit(1); - } - while (!(fp = solv_xfopen(fnp, 0))) - { - fprintf(stderr, "not opened %s\n", fnp); - if (strlen(locale) > 2) - { - if (snprintf(fnp, l, "%s/translation-%.2s.xml.gz", dir, locale) >= l) - { - fprintf(stderr, "-l parameter too long\n"); - exit(1); - } - if ((fp = solv_xfopen(fnp, 0))) - break; - } - perror(fnp); - exit(1); - } - fprintf(stderr, "opened %s\n", fnp); - repo_add_rpmmd(repo, fp, 0, flags); - fclose(fp); - } - solv_free(fnp); + fprintf(stderr, "rpmmd2solv: %s\n", pool_errstr(pool)); + exit(1); } - else - repo_add_rpmmd(repo, stdin, 0, flags); - tool_write(repo, basefile, attrname); +#ifdef SUSE + if (add_auto) + repo_add_autopattern(repo, 0); +#endif + tool_write(repo, stdout); pool_free(pool); exit(0); }