exit(1);
}
}
- tool_write(repo, 0, 0);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
Repo *repo;
FILE *fp;
char buf[4096], *p;
- const char *basefile = 0;
int flags = 0;
- while ((c = getopt(argc, argv, "0b:m:i")) >= 0)
+ while ((c = getopt(argc, argv, "0:m:i")) >= 0)
{
switch(c)
{
- case 'b':
- basefile = optarg;
- break;
case 'm':
manifest = optarg;
break;
res = 1;
}
repo_internalize(repo);
- tool_write(repo, basefile, 0);
+ tool_write(repo, stdout);
pool_free(pool);
for (c = 0; c < npkgs; c++)
solv_free((char *)pkgs[c]);
fprintf(stderr, "archrepo2solv: %s\n", pool_errstr(pool));
exit(1);
}
- tool_write(repo, 0, 0);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
* 1.1: changed PRODUCT_ENDOFLIFE parsing
*/
-static Id verticals[] = {
- SOLVABLE_AUTHORS,
- SOLVABLE_DESCRIPTION,
- SOLVABLE_MESSAGEDEL,
- SOLVABLE_MESSAGEINS,
- SOLVABLE_EULA,
- SOLVABLE_DISKUSAGE,
- SOLVABLE_FILELIST,
- SOLVABLE_CHANGELOG_AUTHOR,
- SOLVABLE_CHANGELOG_TEXT,
- 0
-};
-
-static char *languagetags[] = {
- "solvable:summary:",
- "solvable:description:",
- "solvable:messageins:",
- "solvable:messagedel:",
- "solvable:eula:",
- 0
-};
-
-static int test_separate = 0;
-
-struct keyfilter_data {
- char **languages;
- int nlanguages;
- int haveaddedfileprovides;
- int haveexternal;
-};
-
static int
-keyfilter_solv(Repo *data, Repokey *key, void *kfdata)
+keyfilter_solv(Repo *repo, Repokey *key, void *kfdata)
{
- struct keyfilter_data *kd = kfdata;
- int i;
- const char *keyname;
-
- if (test_separate && key->storage != KEY_STORAGE_SOLVABLE)
- return KEY_STORAGE_DROPPED;
- if (!kd->haveaddedfileprovides && key->name == REPOSITORY_ADDEDFILEPROVIDES)
- return KEY_STORAGE_DROPPED;
- if (!kd->haveexternal && key->name == REPOSITORY_EXTERNAL)
- return KEY_STORAGE_DROPPED;
if (key->name == SUSETAGS_SHARE_NAME || key->name == SUSETAGS_SHARE_EVR || key->name == SUSETAGS_SHARE_ARCH)
return KEY_STORAGE_DROPPED;
- for (i = 0; verticals[i]; i++)
- if (key->name == verticals[i])
- return KEY_STORAGE_VERTICAL_OFFSET;
- keyname = pool_id2str(data->pool, key->name);
- for (i = 0; languagetags[i] != 0; i++)
- if (!strncmp(keyname, languagetags[i], strlen(languagetags[i])))
- return KEY_STORAGE_VERTICAL_OFFSET;
- return KEY_STORAGE_INCORE;
-}
-
-static int
-keyfilter_attr(Repo *data, Repokey *key, void *kfdata)
-{
- int i;
- const char *keyname;
- if (key->storage == KEY_STORAGE_SOLVABLE)
- return KEY_STORAGE_DROPPED;
- /* those must only be in the main solv file */
- if (key->name == REPOSITORY_EXTERNAL || key->name == REPOSITORY_ADDEDFILEPROVIDES || key->name == REPOSITORY_TOOLVERSION)
- return KEY_STORAGE_DROPPED;
- for (i = 0; verticals[i]; i++)
- if (key->name == verticals[i])
- return KEY_STORAGE_VERTICAL_OFFSET;
- keyname = pool_id2str(data->pool, key->name);
- for (i = 0; languagetags[i] != 0; i++)
- if (!strncmp(keyname, languagetags[i], strlen(languagetags[i])))
- return KEY_STORAGE_VERTICAL_OFFSET;
- return KEY_STORAGE_INCORE;
-}
-
-static int
-keyfilter_language(Repo *repo, Repokey *key, void *kfdata)
-{
- Pool *pool = repo->pool;
- const char *name, *p;
- char *lang = kfdata;
- int i;
-
- name = pool_id2str(repo->pool, key->name);
- p = strrchr(name, ':');
- if (!p || strcmp(p + 1, lang) != 0)
- return KEY_STORAGE_DROPPED;
- for (i = 0; verticals[i]; i++)
- {
- const char *vname = pool_id2str(pool, verticals[i]);
- if (!strncmp(name, vname, p - name) && vname[p - name] == 0)
- return KEY_STORAGE_VERTICAL_OFFSET;
- }
- return KEY_STORAGE_INCORE;
-}
-
-static int
-keyfilter_DU(Repo *repo, Repokey *key, void *kfdata)
-{
- int i;
- if (key->name != SOLVABLE_DISKUSAGE)
- return KEY_STORAGE_DROPPED;
- for (i = 0; verticals[i]; i++)
- if (key->name == verticals[i])
- return KEY_STORAGE_VERTICAL_OFFSET;
- return KEY_STORAGE_INCORE;
-}
-
-static int
-keyfilter_FL(Repo *repo, Repokey *key, void *kfdata)
-{
- int i;
- if (key->name != SOLVABLE_FILELIST)
- return KEY_STORAGE_DROPPED;
- for (i = 0; verticals[i]; i++)
- if (key->name == verticals[i])
- return KEY_STORAGE_VERTICAL_OFFSET;
- return KEY_STORAGE_INCORE;
-}
-
-static int
-keyfilter_other(Repo *repo, Repokey *key, void *kfdata)
-{
- const char *name, *p;
- struct keyfilter_data *kd = kfdata;
- int i;
-
- if (!kd->haveaddedfileprovides && key->name == REPOSITORY_ADDEDFILEPROVIDES)
- return KEY_STORAGE_DROPPED;
- if (!kd->haveexternal && key->name == REPOSITORY_EXTERNAL)
- return KEY_STORAGE_DROPPED;
-
- if (key->name == SOLVABLE_FILELIST || key->name == SOLVABLE_DISKUSAGE)
- return KEY_STORAGE_DROPPED;
-
- name = pool_id2str(repo->pool, key->name);
- p = strrchr(name, ':');
- if (p)
- {
- for (i = 0; i < kd->nlanguages; i++)
- if (!strcmp(p + 1, kd->languages[i]))
- return KEY_STORAGE_DROPPED;
- }
- for (i = 0; verticals[i]; i++)
- if (key->name == verticals[i])
- return KEY_STORAGE_VERTICAL_OFFSET;
- return KEY_STORAGE_INCORE;
+ return repo_write_stdkeyfilter(repo, key, kfdata);
}
/*
- * Write <repo> to stdout
- * If <attrname> is given, write attributes to <attrname>
- * If <basename> is given, split attributes
+ * Write <repo> to fp
*/
-
-#define REPODATAFILE_BLOCK 15
-
-static void
-write_info(Repo *repo, FILE *fp, int (*keyfilter)(Repo *repo, Repokey *key, void *kfdata), void *kfdata, Repodata *info, const char *location)
-{
- Id h;
- Queue keyq;
- Repowriter *writer;
-
- queue_init(&keyq);
- writer = repowriter_create(repo);
- repowriter_set_keyfilter(writer, keyfilter, kfdata);
- repowriter_set_keyqueue(writer, &keyq);
- if (repowriter_write(writer, fp) != 0)
- {
- fprintf(stderr, "repo write failed\n");
- exit(1);
- }
- repowriter_free(writer);
- h = repodata_new_handle(info);
- if (keyq.count)
- repodata_set_idarray(info, h, REPOSITORY_KEYS, &keyq);
- queue_free(&keyq);
- repodata_set_str(info, h, REPOSITORY_LOCATION, location);
- repodata_add_flexarray(info, SOLVID_META, REPOSITORY_EXTERNAL, h);
-}
-
void
-tool_write(Repo *repo, const char *basename, const char *attrname)
+tool_write(Repo *repo, FILE *fp)
{
- Repodata *data;
- Repodata *info = 0;
- Repokey *key;
- char **languages = 0;
- int nlanguages = 0;
- int i, j, k, l;
- struct keyfilter_data kd;
+ Repodata *info;
Queue addedfileprovides;
Repowriter *writer;
- memset(&kd, 0, sizeof(kd));
- info = repo_add_repodata(repo, 0);
+ info = repo_add_repodata(repo, 0); /* add new repodata for our meta info */
repodata_set_str(info, SOLVID_META, REPOSITORY_TOOLVERSION, LIBSOLV_TOOLVERSION);
+ repodata_unset(info, SOLVID_META, REPOSITORY_EXTERNAL); /* do not propagate this */
+
queue_init(&addedfileprovides);
pool_addfileprovides_queue(repo->pool, &addedfileprovides, 0);
if (addedfileprovides.count)
- {
- kd.haveaddedfileprovides = 1;
- repodata_set_idarray(info, SOLVID_META, REPOSITORY_ADDEDFILEPROVIDES, &addedfileprovides);
- }
+ repodata_set_idarray(info, SOLVID_META, REPOSITORY_ADDEDFILEPROVIDES, &addedfileprovides);
+ else
+ repodata_unset(info, SOLVID_META, REPOSITORY_ADDEDFILEPROVIDES);
queue_free(&addedfileprovides);
pool_freeidhashes(repo->pool); /* free some mem */
- if (basename)
- {
- char fn[4096];
- FILE *fp;
- int has_DU = 0;
- int has_FL = 0;
-
- /* find languages and other info */
- FOR_REPODATAS(repo, i, data)
- {
- for (j = 1, key = data->keys + j; j < data->nkeys; j++, key++)
- {
- const char *keyname = pool_id2str(repo->pool, key->name);
- if (key->name == SOLVABLE_DISKUSAGE)
- has_DU = 1;
- if (key->name == SOLVABLE_FILELIST)
- has_FL = 1;
- for (k = 0; languagetags[k] != 0; k++)
- if (!strncmp(keyname, languagetags[k], strlen(languagetags[k])))
- break;
- if (!languagetags[k])
- continue;
- l = strlen(languagetags[k]);
- if (strlen(keyname + l) > 5)
- continue;
- for (k = 0; k < nlanguages; k++)
- if (!strcmp(languages[k], keyname + l))
- break;
- if (k < nlanguages)
- continue;
- languages = solv_realloc2(languages, nlanguages + 1, sizeof(char *));
- languages[nlanguages++] = strdup(keyname + l);
- }
- }
- /* write language subfiles */
- for (i = 0; i < nlanguages; i++)
- {
- sprintf(fn, "%s.%s.solv", basename, languages[i]);
- if (!(fp = fopen(fn, "w")))
- {
- perror(fn);
- exit(1);
- }
- write_info(repo, fp, keyfilter_language, languages[i], info, fn);
- fclose(fp);
- kd.haveexternal = 1;
- }
- /* write DU subfile */
- if (has_DU)
- {
- sprintf(fn, "%s.DU.solv", basename);
- if (!(fp = fopen(fn, "w")))
- {
- perror(fn);
- exit(1);
- }
- write_info(repo, fp, keyfilter_DU, 0, info, fn);
- fclose(fp);
- kd.haveexternal = 1;
- }
- /* write filelist */
- if (has_FL)
- {
- sprintf(fn, "%s.FL.solv", basename);
- if (!(fp = fopen(fn, "w")))
- {
- perror(fn);
- exit(1);
- }
- write_info(repo, fp, keyfilter_FL, 0, info, fn);
- fclose(fp);
- kd.haveexternal = 1;
- }
- /* write everything else */
- sprintf(fn, "%s.solv", basename);
- if (!(fp = fopen(fn, "w")))
- {
- perror(fn);
- exit(1);
- }
- kd.languages = languages;
- kd.nlanguages = nlanguages;
- repodata_internalize(info);
- writer = repowriter_create(repo);
- repowriter_set_keyfilter(writer, keyfilter_other, &kd);
- if (repowriter_write(writer, fp) != 0)
- {
- fprintf(stderr, "repo write failed\n");
- exit(1);
- }
- if (fclose(fp) != 0)
- {
- perror("fclose");
- exit(1);
- }
- repowriter_free(writer);
- for (i = 0; i < nlanguages; i++)
- free(languages[i]);
- solv_free(languages);
- repodata_free(info);
- return;
- }
- if (attrname)
- {
- FILE *fp;
- test_separate = 1;
- fp = fopen(attrname, "w");
- write_info(repo, fp, keyfilter_attr, 0, info, attrname);
- fclose(fp);
- kd.haveexternal = 1;
- }
repodata_internalize(info);
writer = repowriter_create(repo);
- repowriter_set_keyfilter(writer, keyfilter_solv, &kd);
- if (repowriter_write(writer, stdout) != 0)
+ repowriter_set_keyfilter(writer, keyfilter_solv, 0);
+ if (repowriter_write(writer, fp) != 0)
{
fprintf(stderr, "repo write failed\n");
exit(1);
}
- if (fflush(stdout))
+ if (fflush(fp))
{
perror("fflush");
exit(1);
}
repowriter_free(writer);
- repodata_free(info);
+ repodata_free(info); /* delete meta info repodata again */
}
#include "repo.h"
-void tool_write(Repo *repo, const char *basename, const char *attrname);
+void tool_write(Repo *repo, FILE *fp);
#endif
fprintf(stderr, "comps2solv: %s\n", pool_errstr(pool));
exit(1);
}
- tool_write(repo, 0, 0);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
const char *basefile = 0;
int is_repo = 0;
- while ((c = getopt(argc, argv, "0b:m:r")) >= 0)
+ while ((c = getopt(argc, argv, "0:m:r")) >= 0)
{
switch(c)
{
- case 'b':
- basefile = optarg;
- break;
case 'm':
manifest = optarg;
break;
}
}
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]);
usage(int status)
{
fprintf(stderr, "\nUsage:\n"
- "deltainfoxml2solv [-a][-h][-n <attrname>]\n"
+ "deltainfoxml2solv [-h]\n"
" reads a 'deltainfo.xml' file from <stdin> and writes a .solv file to <stdout>\n"
" -h : print help & exit\n"
- " -n <name>: save attributes as <name>.attr\n"
);
exit(status);
}
main(int argc, char **argv)
{
int c, flags = 0;
- char *attrname = 0;
Pool *pool = pool_create();
Repo *repo = repo_create(pool, "<stdin>");
- while ((c = getopt(argc, argv, "hn:")) >= 0)
+ while ((c = getopt(argc, argv, "h")) >= 0)
{
switch(c)
{
case 'h':
usage(0);
break;
- case 'n':
- attrname = optarg;
- break;
default:
usage(1);
break;
fprintf(stderr, "deltainfoxml2solv: %s\n", pool_errstr(pool));
exit(1);
}
- tool_write(repo, 0, attrname);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
usage(int status)
{
fprintf(stderr, "\nUsage:\n"
- "diskusagexml2solv [-a][-h][-n <attrname>]\n"
+ "diskusagexml2solv [-h]\n"
" reads a 'diskusage.xml' file from <stdin> and writes a .solv file to <stdout>\n"
" -h : print help & exit\n"
- " -n <name>: save attributes as <name>.attr\n"
);
exit(status);
}
main(int argc, char **argv)
{
int c, flags = 0;
- char *attrname = 0;
Pool *pool = pool_create();
Repo *repo = repo_create(pool, "<stdin>");
- while ((c = getopt(argc, argv, "hn:")) >= 0)
+ while ((c = getopt(argc, argv, "h")) >= 0)
{
switch(c)
{
case 'h':
usage(0);
break;
- case 'n':
- attrname = optarg;
- break;
default:
usage(1);
break;
fprintf(stderr, "diskusagexml2solv: %s\n", pool_errstr(pool));
exit(1);
}
- tool_write(repo, 0, attrname);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
fprintf(stderr, "helix2solv: %s\n", pool_errstr(pool));
exit(1);
}
- tool_write(repo, 0, 0);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
/*
- * Copyright (c) 2012, Novell Inc.
+ * Copyright (c) 2012, Novell Inc.);
*
* This program is licensed under the BSD license, read LICENSE.BSD
* for further information
fclose(fp);
}
repo_internalize(repo);
- tool_write(repo, 0, 0);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
{
Pool *pool;
Repo *repo;
- const char *basefile = 0;
int with_attr = 0;
#ifdef SUSE
int add_auto = 0;
pool = pool_create();
repo = repo_create(pool, "<mergesolv>");
- while ((c = getopt(argc, argv, "ahb:X")) >= 0)
+ while ((c = getopt(argc, argv, "ahX")) >= 0)
{
switch (c)
{
case 'a':
with_attr = 1;
break;
- case 'b':
- basefile = optarg;
- break;
case 'X':
#ifdef SUSE
add_auto = 1;
if (add_auto)
repo_add_autopattern(repo, 0);
#endif
- tool_write(repo, basefile, 0);
+ tool_write(repo, stdout);
pool_free(pool);
return 0;
}
if (add_auto)
repo_add_autopattern(repo, 0);
#endif
- tool_write(repo, 0, 0);
- if (fflush(stdout))
- {
- perror("fflush");
- exit(1);
- }
+ tool_write(repo, stdout);
pool_free(pool);
solv_free(dir);
exit(res);
if (query)
doquery(pool, repo, query);
else
- tool_write(repo, 0, 0);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
fprintf(stderr, "\nUsage:\n"
"rpmdb2solv [-n] [-b <basefile>] [-p <productsdir>] [-r <root>]\n"
" -n : No packages, do not read rpmdb, useful to only parse products\n"
- " -b <basefile> : Write .solv to <basefile>.solv instead of stdout\n"
" -p <productsdir> : Scan <productsdir> for .prod files, representing installed products\n"
" -r <root> : Prefix rpmdb path and <productsdir> with <root>\n"
" -o <solv> : Write .solv to file instead of stdout\n"
int nopacks = 0;
int add_changelog = 0;
const char *root = 0;
- const char *basefile = 0;
const char *refname = 0;
#ifdef ENABLE_SUSEREPO
char *proddir = 0;
* parse arguments
*/
- while ((c = getopt(argc, argv, "ACPhnkxXb:r:p:o:")) >= 0)
+ while ((c = getopt(argc, argv, "ACPhnkxXr:p:o:")) >= 0)
switch (c)
{
case 'h':
case 'r':
root = optarg;
break;
- case 'b':
- basefile = optarg;
- break;
case 'n':
nopacks = 1;
break;
repo_add_autopattern(repo, ADD_NO_AUTOPRODUCTS);
#endif
- tool_write(repo, basefile, 0);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
usage(int status)
{
fprintf(stderr, "\nUsage:\n"
- "rpmmd2solv [-a][-h][-n <attrname>][-l <locale>]\n"
+ "rpmmd2solv [-h]\n"
" reads 'primary' from a 'rpmmd' repository from <stdin> and writes a .solv file to <stdout>\n"
" -h : print help & exit\n"
- " -n <name>: save attributes as <name>.attr\n"
- " -l <locale>: parse localization data for <locale>\n"
);
exit(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, "<stdin>");
- while ((c = getopt (argc, argv, "hn:b:d:l:X")) >= 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;
- break;
case 'X':
#ifdef SUSE
add_auto = 1;
break;
}
}
- if (dir)
- {
- 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);
- }
- if (repo_add_rpmmd(repo, fp, 0, flags))
- {
- fprintf(stderr, "rpmmd2solv: %s: %s\n", fnp, pool_errstr(pool));
- exit(1);
- }
- fclose(fp);
- snprintf(fnp, l, "%s/diskusagedata.xml.gz", dir);
- if ((fp = solv_xfopen(fnp, 0)))
- {
- if (repo_add_rpmmd(repo, fp, 0, flags))
- {
- fprintf(stderr, "rpmmd2solv: %s: %s\n", fnp, pool_errstr(pool));
- exit(1);
- }
- 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);
- if (repo_add_rpmmd(repo, fp, 0, flags))
- {
- fprintf(stderr, "rpmmd2solv: %s: %s\n", fnp, pool_errstr(pool));
- exit(1);
- }
- fclose(fp);
- }
- solv_free(fnp);
- }
- else
+ if (repo_add_rpmmd(repo, stdin, 0, 0))
{
- if (repo_add_rpmmd(repo, stdin, 0, flags))
- {
- fprintf(stderr, "rpmmd2solv: %s\n", pool_errstr(pool));
- exit(1);
- }
+ fprintf(stderr, "rpmmd2solv: %s\n", pool_errstr(pool));
+ exit(1);
}
#ifdef SUSE
if (add_auto)
repo_add_autopattern(repo, 0);
#endif
- tool_write(repo, basefile, attrname);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
Repo *repo;
FILE *fp;
char buf[4096], *p;
- const char *basefile = 0;
#ifdef ENABLE_PUBKEY
int pubkeys = 0;
#endif
#endif
int filtered_filelist = 0;
- while ((c = getopt(argc, argv, "0XkKb:m:F")) >= 0)
+ while ((c = getopt(argc, argv, "0XkKm:F")) >= 0)
{
switch(c)
{
- case 'b':
- basefile = optarg;
- break;
case 'm':
manifest = optarg;
break;
if (add_auto)
repo_add_autopattern(repo, 0);
#endif
- tool_write(repo, basefile, 0);
+ tool_write(repo, stdout);
pool_free(pool);
for (c = 0; c < nrpms; c++)
free((char *)rpms[c]);
usage(int status)
{
fprintf(stderr, "\nUsage:\n"
- "susetags2solv [-b <base>][-c <content>][-d <descrdir>][-h][-n <name>]\n"
+ "susetags2solv [-c <content>][-d <descrdir>][-h][-n <name>]\n"
" reads a 'susetags' repository from <stdin> and writes a .solv file to <stdout>\n"
- " -b <base>: save as multiple files starting with <base>\n"
" -c <contentfile> : parse given contentfile (for product information)\n"
" -d <descrdir> : do not read from stdin, but use data in descrdir\n"
" -h : print help & exit\n"
- " -n <name>: save attributes as <name>.attr\n"
);
exit(status);
}
main(int argc, char **argv)
{
const char *contentfile = 0;
- const char *attrname = 0;
const char *descrdir = 0;
- const char *basefile = 0;
const char *query = 0;
const char *mergefile = 0;
Id defvendor = 0;
Pool *pool;
Repo *repo;
- while ((c = getopt(argc, argv, "hn:c:d:b:q:M:X")) >= 0)
+ while ((c = getopt(argc, argv, "hc:d:q:M:X")) >= 0)
{
switch (c)
{
case 'h':
usage(0);
break;
- case 'n':
- attrname = optarg;
- break;
case 'c':
contentfile = optarg;
break;
case 'd':
descrdir = optarg;
break;
- case 'b':
- basefile = optarg;
- break;
case 'q':
query = optarg;
break;
fclose(fp);
}
- if (attrname)
- {
- /* ensure '.attr' suffix */
- const char *dot = strrchr(attrname, '.');
- if (!dot || strcmp(dot, ".attr"))
- {
- int len = strlen (attrname);
- char *newname = (char *)malloc(len + 6); /* alloc for <attrname>+'.attr'+'\0' */
- strcpy (newname, attrname);
- strcpy (newname+len, ".attr");
- attrname = newname;
- }
- }
-
/*
* descrdir path given, open files and read from there
*/
if (query)
doquery(pool, repo, query);
else
- tool_write(repo, basefile, attrname);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}
usage(int status)
{
fprintf(stderr, "\nUsage:\n"
- "updateinfoxml2solv [-h][-n <attrname>]\n"
+ "updateinfoxml2solv [-h]\n"
" reads a 'updateinfo.xml' file from <stdin> and writes a .solv file to <stdout>\n"
" -h : print help & exit\n"
- " -n <name>: save attributes as <name>.attr\n"
);
exit(status);
}
main(int argc, char **argv)
{
int c, flags = 0;
- char *attrname = 0;
Pool *pool = pool_create();
Repo *repo = repo_create(pool, "<stdin>");
- while ((c = getopt(argc, argv, "hn:")) >= 0)
+ while ((c = getopt(argc, argv, "h")) >= 0)
{
switch(c)
{
case 'h':
usage(0);
break;
- case 'n':
- attrname = optarg;
- break;
default:
usage(1);
break;
fprintf(stderr, "updateinfoxml2solv: %s\n", pool_errstr(pool));
exit(1);
}
- tool_write(repo, 0, attrname);
+ tool_write(repo, stdout);
pool_free(pool);
exit(0);
}