From: Michael Schroeder Date: Fri, 29 Feb 2008 22:02:51 +0000 (+0000) Subject: - new program X-Git-Tag: BASE-SuSE-Code-12_1-Branch~856 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=289b21476a34048f7b63a9aecb1ec9beb54a61de;p=platform%2Fupstream%2Flibsolv.git - new program --- diff --git a/tools/rpms2solv.c b/tools/rpms2solv.c new file mode 100644 index 0000000..1075046 --- /dev/null +++ b/tools/rpms2solv.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2007, Novell Inc. + * + * This program is licensed under the BSD license, read LICENSE.BSD + * for further information + */ + +/* + * rpms2solv - create a solv file from multiple rpms + * + */ + +#include +#include +#include +#include +#include + +#include "util.h" +#include "pool.h" +#include "repo.h" +#include "repo_rpmdb.h" +#include "repo_solv.h" +#include "common_write.h" + +int +main(int argc, char **argv) +{ + const char **rpms = 0; + char *manifest = 0; + int c, nrpms = 0; + Pool *pool = pool_create(); + Repo *repo; + FILE *fp; + char buf[4096], *p; + + while ((c = getopt(argc, argv, "m:")) >= 0) + { + switch(c) + { + case 'm': + manifest = optarg; + break; + default: + exit(1); + } + } + if (manifest) + { + if ((fp = fopen(manifest, "r")) == 0) + { + perror(manifest); + exit(1); + } + while(fgets(buf, sizeof(buf), fp)) + { + if ((p = strchr(buf, '\n')) != 0) + *p = 0; + rpms = sat_extend(rpms, nrpms, 1, sizeof(char *), 15); + rpms[nrpms++] = strdup(buf); + } + fclose(fp); + } + while (optind < argc) + { + rpms = sat_extend(rpms, nrpms, 1, sizeof(char *), 15); + rpms[nrpms++] = strdup(argv[optind++]); + } + repo = repo_create(pool, "rpms2solv"); + repo_add_rpms(repo, rpms, nrpms); + tool_write(repo, 0, 0); + pool_free(pool); + for (c = 0; c < nrpms; c++) + free((char *)rpms[c]); + sat_free(rpms); + exit(0); +} +