Author: kkaempf Date: Mon Aug 4 12:32:34 2008 New Revision: 10736 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10736&view=rev Log: prepare to parse diskusage and translations through rpmmd files (backup checkin) Modified: trunk/sat-solver/tools/repo_rpmmd.c trunk/sat-solver/tools/rpmmd2solv.c Modified: trunk/sat-solver/tools/repo_rpmmd.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/tools/repo_rpmmd.c?rev=10736&r1=10735&r2=10736&view=diff ============================================================================== --- trunk/sat-solver/tools/repo_rpmmd.c (original) +++ trunk/sat-solver/tools/repo_rpmmd.c Mon Aug 4 12:32:34 2008 @@ -178,6 +178,7 @@ { NUMSTATES} }; + struct parsedata { struct parsedata_common common; char *kind; @@ -200,8 +201,12 @@ Repodata *data; Id handle; XML_Parser *parser; + Id (*dirs)[3]; // dirid, size, nfiles + int ndirs; + Id langcache[ID_NUM_INTERNAL]; }; + static Id makeevr_atts(Pool *pool, struct parsedata *pd, const char **atts) { Modified: trunk/sat-solver/tools/rpmmd2solv.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/tools/rpmmd2solv.c?rev=10736&r1=10735&r2=10736&view=diff ============================================================================== --- trunk/sat-solver/tools/rpmmd2solv.c (original) +++ trunk/sat-solver/tools/rpmmd2solv.c Mon Aug 4 12:32:34 2008 @@ -59,11 +59,12 @@ usage(int status) { fprintf(stderr, "\nUsage:\n" - "rpmmd2solv [-a][-h][-k][-n <attrname>]\n" - " reads a 'rpmmd' repository from <stdin> and writes a .solv file to <stdout>\n" + "rpmmd2solv [-a][-h][-k][-n <attrname>][-l <locale>]\n" + " reads 'primary' from a 'rpmmd' repository from <stdin> and writes a .solv file to <stdout>\n" " -h : print help & exit\n" " -k : don't mix kinds (experimental!)\n" " -n <name>: save attributes as <name>.attr\n" + " -l <locale>: parse localization data for <locale>\n" ); exit(status); } @@ -75,12 +76,12 @@ const char *attrname = 0; const char *basefile = 0; const char *dir = 0; - + const char *locale = 0; Pool *pool = pool_create(); Repo *repo = repo_create(pool, "<stdin>"); - while ((c = getopt (argc, argv, "hkn:b:d:")) >= 0) + while ((c = getopt (argc, argv, "hkn:b:d:l:")) >= 0) { switch(c) { @@ -99,6 +100,9 @@ case 'd': dir = optarg; break; + case 'l': + locale = optarg; + break; default: usage(1); break; @@ -109,9 +113,9 @@ FILE *fp; int l; char *fnp; - l = strlen(dir); - fnp = sat_malloc(l + 20); - sprintf(fnp, "%s/primary.xml.gz", dir); + l = strlen(dir) + 128; + fnp = sat_malloc(l+1); + snprintf(fnp, l, "%s/primary.xml.gz", dir); if (!(fp = myfopen(fnp))) { perror(fnp); @@ -119,6 +123,39 @@ } repo_add_rpmmd(repo, fp, flags); fclose(fp); + snprintf(fnp, l, "%s/diskusage.xml.gz", dir); + if ((fp = myfopen(fnp))) + { + repo_add_rpmmd(repo, fp, 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 = myfopen(fnp))) + { + 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 = myfopen(fnp))) + break; + } + perror(fnp); + exit(1); + } + fprintf(stderr, "opened %s\n", fnp); + repo_add_rpmmd(repo, fp, flags); + fclose(fp); + } sat_free(fnp); } else -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org