*/
#include <sys/types.h>
-#include <limits.h>
-#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "repo.h"
#include "repo_write.h"
#include "common_write.h"
+#include "solvversion.h"
-#define LIBSOLV_TOOLVERSION "1.0"
+/* toolversion history
+ * 1.0: initial tool version
+ * 1.1: changed PRODUCT_ENDOFLIFE parsing
+*/
static Id verticals[] = {
SOLVABLE_AUTHORS,
SOLVABLE_EULA,
SOLVABLE_DISKUSAGE,
SOLVABLE_FILELIST,
+ SOLVABLE_CHANGELOG_AUTHOR,
+ SOLVABLE_CHANGELOG_TEXT,
0
};
return KEY_STORAGE_DROPPED;
if (!kd->haveexternal && key->name == REPOSITORY_EXTERNAL)
return KEY_STORAGE_DROPPED;
+ if (key->name == SUSETAGS_SHARE_NAME || key->name == SUSETAGS_SHARE_EVR || key->name == SUSETAGS_SHARE_ARCH)
+ return KEY_STORAGE_DROPPED;
for (i = 0; verticals[i]; i++)
if (key->name == verticals[i])
return KEY_STORAGE_VERTICAL_OFFSET;
Queue keyq;
queue_init(&keyq);
- repo_write_filtered(repo, fp, keyfilter, kfdata, &keyq);
+ if (repo_write_filtered(repo, fp, keyfilter, kfdata, &keyq) != 0)
+ {
+ fprintf(stderr, "repo_write failed\n");
+ exit(1);
+ }
h = repodata_new_handle(info);
if (keyq.count)
repodata_set_idarray(info, h, REPOSITORY_KEYS, &keyq);
repodata_add_flexarray(info, SOLVID_META, REPOSITORY_EXTERNAL, h);
}
-int
+void
tool_write(Repo *repo, const char *basename, const char *attrname)
{
Repodata *data;
info = repo_add_repodata(repo, 0);
repodata_set_str(info, SOLVID_META, REPOSITORY_TOOLVERSION, LIBSOLV_TOOLVERSION);
queue_init(&addedfileprovides);
- pool_addfileprovides_queue(repo->pool, &addedfileprovides);
+ pool_addfileprovides_queue(repo->pool, &addedfileprovides, 0);
if (addedfileprovides.count)
{
kd.haveaddedfileprovides = 1;
kd.languages = languages;
kd.nlanguages = nlanguages;
repodata_internalize(info);
- repo_write_filtered(repo, fp, keyfilter_other, &kd, 0);
- fclose(fp);
+ if (repo_write_filtered(repo, fp, keyfilter_other, &kd, 0) != 0)
+ {
+ fprintf(stderr, "repo_write failed\n");
+ exit(1);
+ }
+ if (fclose(fp) != 0)
+ {
+ perror("fclose");
+ exit(1);
+ }
for (i = 0; i < nlanguages; i++)
free(languages[i]);
solv_free(languages);
repodata_free(info);
- return 0;
}
if (attrname)
{
kd.haveexternal = 1;
}
repodata_internalize(info);
- repo_write_filtered(repo, stdout, keyfilter_solv, &kd, 0);
+ if (repo_write_filtered(repo, stdout, keyfilter_solv, &kd, 0) != 0)
+ {
+ fprintf(stderr, "repo_write failed\n");
+ exit(1);
+ }
repodata_free(info);
- return 0;
}