2 * Copyright (c) 2007, Novell Inc.
4 * This program is licensed under the BSD license, read LICENSE.BSD
5 * for further information
9 * deb2solv - create a solv file from one or multiple debs
13 #include <sys/types.h>
24 #include "repo_solv.h"
25 #include "common_write.h"
28 fgets0(char *s, int size, FILE *stream)
51 main(int argc, char **argv)
53 const char **debs = 0;
56 int c, i, res, ndebs = 0;
57 Pool *pool = pool_create();
63 while ((c = getopt(argc, argv, "0:m:r")) >= 0)
82 if (!strcmp(manifest, "-"))
84 else if ((fp = fopen(manifest, "r")) == 0)
93 if (!fgets0(buf, sizeof(buf), fp))
98 if (!fgets(buf, sizeof(buf), fp))
100 if ((p = strchr(buf, '\n')) != 0)
103 debs = solv_extend(debs, ndebs, 1, sizeof(char *), 15);
104 debs[ndebs++] = strdup(buf);
109 while (optind < argc)
111 debs = solv_extend(debs, ndebs, 1, sizeof(char *), 15);
112 debs[ndebs++] = strdup(argv[optind++]);
114 repo = repo_create(pool, "deb2solv");
115 repo_add_repodata(repo, 0);
117 if (!ndebs && !manifest && is_repo)
119 if (repo_add_debpackages(repo, stdin, REPO_REUSE_REPODATA|REPO_NO_INTERNALIZE))
121 fprintf(stderr, "deb2solv: %s\n", pool_errstr(pool));
125 for (i = 0; i < ndebs; i++)
129 if ((fp = fopen(debs[i], "r")) == 0)
135 if (repo_add_debpackages(repo, fp, REPO_REUSE_REPODATA|REPO_NO_INTERNALIZE))
137 fprintf(stderr, "deb2solv: %s\n", pool_errstr(pool));
143 if (repo_add_deb(repo, debs[i], REPO_REUSE_REPODATA|REPO_NO_INTERNALIZE) == 0)
145 fprintf(stderr, "deb2solv: %s\n", pool_errstr(pool));
149 repo_internalize(repo);
150 tool_write(repo, stdout);
152 for (c = 0; c < ndebs; c++)
153 free((char *)debs[c]);