fileinfos = sat_zextend(fileinfos, nfileinfos, 1, sizeof(Repodatafile), REPODATAFILE_BLOCK);
pool_addfileprovides_ids(repo->pool, 0, &fileinfos[nfileinfos].addedfileprovides);
- if (repo->rpmdbcookie)
+ for (i = 0; i < 32; i++)
+ if (repo->rpmdbcookie[i])
+ break;
+ if (i < 32)
fileinfos[nfileinfos].rpmdbcookie = repo->rpmdbcookie;
if (fileinfos[nfileinfos].addedfileprovides || fileinfos[nfileinfos].rpmdbcookie)
nfileinfos++;
*/
#include <sys/types.h>
+#include <unistd.h>
#include <limits.h>
#include <fcntl.h>
#include <stdio.h>
exit(0);
}
+static FILE *
+loadcallback (Pool *pool, Repodata *data, void *vdata)
+{
+ FILE *fp = 0;
+ if (data->location)
+ {
+ fprintf(stderr, "Loading SOLV file %s\n", data->location);
+ fp = fopen (data->location, "r");
+ if (!fp)
+ perror(data->location);
+ }
+ return fp;
+}
int
main(int argc, char **argv)
{
- Pool *pool = pool_create();
+ Pool *pool;
Repo *repo;
+ const char *basefile = 0;
+ int with_attr = 0;
+ int c;
- repo = repo_create(pool, "");
- while (argc-- > 1)
+ pool = pool_create();
+ repo = repo_create(pool, "<mergesolv>");
+
+ while ((c = getopt(argc, argv, "ahb:")) >= 0)
+ {
+ switch (c)
+ {
+ case 'h':
+ usage();
+ break;
+ case 'a':
+ with_attr = 1;
+ break;
+ case 'b':
+ basefile = optarg;
+ break;
+ default:
+ exit(1);
+ }
+ }
+ if (with_attr)
+ pool_setloadcallback(pool, loadcallback, 0);
+
+ for (; optind < argc; optind++)
{
FILE *fp;
- argv++;
- if (!strcmp(*argv,"-h"))
- usage();
- if ((fp = fopen(*argv, "r")) == NULL)
+ if ((fp = fopen(argv[optind], "r")) == NULL)
{
- perror(argv[1]);
+ perror(argv[optind]);
exit(0);
}
repo_add_solv(repo, fp);
fclose(fp);
}
-
- tool_write(repo, 0, 0);
+ tool_write(repo, basefile, 0);
pool_free(pool);
-
return 0;
}