From 2cab5a7f38f56cfffa4947bab4b1a891c9d75c2b Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Thu, 1 Dec 2011 12:26:06 +0100 Subject: [PATCH] - support severity/rights/updated in updateinfo.xml --- ext/repo_updateinfoxml.c | 65 ++++++++++++++++++++++++++++++++---------------- src/knownid.h | 2 ++ 2 files changed, 46 insertions(+), 21 deletions(-) diff --git a/ext/repo_updateinfoxml.c b/ext/repo_updateinfoxml.c index fc5a1bd..35ea405 100644 --- a/ext/repo_updateinfoxml.c +++ b/ext/repo_updateinfoxml.c @@ -27,8 +27,11 @@ * * FEDORA-2007-4594 * imlib-1.9.15-6.fc8 + * Important * Fedora 8 + * Copyright 2007 Company Inc * + * * * * @@ -48,24 +51,27 @@ enum state { STATE_START, - STATE_UPDATES, /* 1 */ - STATE_UPDATE, /* 2 */ - STATE_ID, /* 3 */ - STATE_TITLE, /* 4 */ - STATE_RELEASE, /* 5 */ - STATE_ISSUED, /* 6 */ - STATE_MESSAGE, /* 7 */ - STATE_REFERENCES, /* 8 */ - STATE_REFERENCE, /* 9 */ - STATE_DESCRIPTION, /* 10 */ - STATE_PKGLIST, /* 11 */ - STATE_COLLECTION, /* 12 */ - STATE_NAME, /* 13 */ - STATE_PACKAGE, /* 14 */ - STATE_FILENAME, /* 15 */ - STATE_REBOOT, /* 16 */ - STATE_RESTART, /* 17 */ - STATE_RELOGIN, /* 18 */ + STATE_UPDATES, + STATE_UPDATE, + STATE_ID, + STATE_TITLE, + STATE_RELEASE, + STATE_ISSUED, + STATE_UPDATED, + STATE_MESSAGE, + STATE_REFERENCES, + STATE_REFERENCE, + STATE_DESCRIPTION, + STATE_PKGLIST, + STATE_COLLECTION, + STATE_NAME, + STATE_PACKAGE, + STATE_FILENAME, + STATE_REBOOT, + STATE_RESTART, + STATE_RELOGIN, + STATE_RIGHTS, + STATE_SEVERITY, NUMSTATES }; @@ -84,8 +90,11 @@ static struct stateswitch stateswitches[] = { { STATE_UPDATES, "update", STATE_UPDATE, 0 }, { STATE_UPDATE, "id", STATE_ID, 1 }, { STATE_UPDATE, "title", STATE_TITLE, 1 }, + { STATE_UPDATE, "severity", STATE_SEVERITY, 1 }, + { STATE_UPDATE, "rights", STATE_RIGHTS, 1 }, { STATE_UPDATE, "release", STATE_RELEASE, 1 }, - { STATE_UPDATE, "issued", STATE_ISSUED, 1 }, + { STATE_UPDATE, "issued", STATE_ISSUED, 0 }, + { STATE_UPDATE, "updated", STATE_UPDATED, 0 }, { STATE_UPDATE, "description", STATE_DESCRIPTION, 1 }, { STATE_UPDATE, "message", STATE_MESSAGE , 1 }, { STATE_UPDATE, "references", STATE_REFERENCES, 0 }, @@ -114,6 +123,7 @@ struct parsedata { Repodata *data; unsigned int datanum; Solvable *solvable; + time_t buildtime; Id collhandle; struct stateswitch *swtab[NUMSTATES]; @@ -295,6 +305,7 @@ startElement(void *userData, const char *name, const char **atts) solvable->arch = ARCH_NOARCH; if (type) repodata_set_str(pd->data, pd->datanum, SOLVABLE_PATCHCATEGORY, type); + pd->buildtime = (time_t)0; } break; /* FEDORA-2007-4594 */ @@ -309,6 +320,7 @@ startElement(void *userData, const char *name, const char **atts) /* */ case STATE_ISSUED: + case STATE_UPDATED: { const char *date = 0; for (; *atts; atts += 2) @@ -319,8 +331,8 @@ startElement(void *userData, const char *name, const char **atts) if (date) { time_t t = datestr2timestamp(date); - if (t) - repodata_set_num(pd->data, pd->datanum, SOLVABLE_BUILDTIME, t); + if (t && t > pd->buildtime) + pd->buildtime = t; } } break; @@ -463,6 +475,11 @@ endElement(void *userData, const char *name) break; case STATE_UPDATE: s->provides = repo_addid_dep(repo, s->provides, pool_rel2id(pool, s->name, s->evr, REL_EQ, 1), 0); + if (pd->buildtime) + { + repodata_set_num(pd->data, pd->datanum, SOLVABLE_BUILDTIME, pd->buildtime); + pd->buildtime = (time_t)0; + } break; case STATE_ID: s->name = pool_str2id(pool, join2("patch", ":", pd->content), 1); @@ -473,6 +490,12 @@ endElement(void *userData, const char *name) pd->content[--pd->lcontent] = 0; repodata_set_str(pd->data, pd->datanum, SOLVABLE_SUMMARY, pd->content); break; + case STATE_SEVERITY: + repodata_set_poolstr(pd->data, pd->datanum, UPDATE_SEVERITY, pd->content); + break; + case STATE_RIGHTS: + repodata_set_poolstr(pd->data, pd->datanum, UPDATE_RIGHTS, pd->content); + break; /* * Fedora 8 */ diff --git a/src/knownid.h b/src/knownid.h index fdf7b0f..568f301 100644 --- a/src/knownid.h +++ b/src/knownid.h @@ -146,6 +146,8 @@ KNOWNID(UPDATE_RESTART, "update:restart"), /* restart suggested (update stack KNOWNID(UPDATE_RELOGIN, "update:relogin"), /* relogin suggested */ KNOWNID(UPDATE_MESSAGE, "update:message"), /* informative message */ +KNOWNID(UPDATE_SEVERITY, "update:severity"), /* "Important", ...*/ +KNOWNID(UPDATE_RIGHTS, "update:rights"), /* copyright */ /* 'content' of patch, usually list of packages */ KNOWNID(UPDATE_COLLECTION, "update:collection"), /* "name evr arch" */ -- 2.7.4