From: Michael Schroeder Date: Wed, 5 Mar 2008 15:10:09 +0000 (+0000) Subject: - support -b option X-Git-Tag: BASE-SuSE-Code-12_1-Branch~308^2~531 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7d93d0f0d3cae64fb0139966f32219dbaff69c2;p=thirdparty%2Flibsolv.git - support -b option - support headerend --- diff --git a/tools/repo_rpmdb.c b/tools/repo_rpmdb.c index 1162aa5f..bebb4be9 100644 --- a/tools/repo_rpmdb.c +++ b/tools/repo_rpmdb.c @@ -1184,6 +1184,7 @@ repo_add_rpms(Repo *repo, const char **rpms, int nrpms) int rpmheadsize = 0; FILE *fp; unsigned char lead[4096]; + int headerstart, headerend; if (nrpms <= 0) return; @@ -1223,6 +1224,7 @@ repo_add_rpms(Repo *repo, const char **rpms, int nrpms) } sigdsize += sigcnt * 16; sigdsize = (sigdsize + 7) & ~7; + headerstart = 96 + 16 + sigdsize; while (sigdsize) { l = sigdsize > 4096 ? 4096 : sigdsize; @@ -1255,6 +1257,7 @@ repo_add_rpms(Repo *repo, const char **rpms, int nrpms) continue; } l = sigdsize + sigcnt * 16; + headerend = headerstart + 16 + l; if (l > rpmheadsize) rpmhead = sat_realloc(rpmhead, sizeof(*rpmhead) + l); if (fread(rpmhead->data, l, 1, fp) != 1) @@ -1270,6 +1273,8 @@ repo_add_rpms(Repo *repo, const char **rpms, int nrpms) s = pool_id2solvable(pool, repo_add_solvable(repo)); rpm2solv(pool, repo, repodata, s, rpmhead); add_location(repodata, s, rpms[i]); + if (repodata) + repodata_set_num(repodata, (s - pool->solvables) - repodata->start, SOLVABLE_HEADEREND, headerend); } if (rpmhead) sat_free(rpmhead); diff --git a/tools/rpms2solv.c b/tools/rpms2solv.c index 1075046a..141719c1 100644 --- a/tools/rpms2solv.c +++ b/tools/rpms2solv.c @@ -33,11 +33,15 @@ main(int argc, char **argv) Repo *repo; FILE *fp; char buf[4096], *p; + const char *basefile = 0; - while ((c = getopt(argc, argv, "m:")) >= 0) + while ((c = getopt(argc, argv, "b:m:")) >= 0) { switch(c) { + case 'b': + basefile = optarg; + break; case 'm': manifest = optarg; break; @@ -68,7 +72,7 @@ main(int argc, char **argv) } repo = repo_create(pool, "rpms2solv"); repo_add_rpms(repo, rpms, nrpms); - tool_write(repo, 0, 0); + tool_write(repo, basefile, 0); pool_free(pool); for (c = 0; c < nrpms; c++) free((char *)rpms[c]);