X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=ext%2Frepo_repomdxml.c;h=1d1197e2fee69239946ae08070ef17d36e55835c;hb=8446c7a4d461fe6db107b7f75d43845cf55ddde7;hp=0697aa8335ee698e00acd778e5551d1358c87146;hpb=5702cc433a97b2365801855bdc5572f940d8bc9a;p=platform%2Fupstream%2Flibsolv.git diff --git a/ext/repo_repomdxml.c b/ext/repo_repomdxml.c index 0697aa8..1d1197e 100644 --- a/ext/repo_repomdxml.c +++ b/ext/repo_repomdxml.c @@ -106,6 +106,7 @@ enum state { STATE_CHECKSUM, STATE_TIMESTAMP, STATE_OPENCHECKSUM, + STATE_SIZE, NUMSTATES }; @@ -144,7 +145,8 @@ static struct stateswitch stateswitches[] = { { STATE_DATA, "location", STATE_LOCATION, 0 }, { STATE_DATA, "checksum", STATE_CHECKSUM, 1 }, { STATE_DATA, "timestamp", STATE_TIMESTAMP, 1 }, - { STATE_DATA, "open-checksum", STATE_OPENCHECKSUM, 1 }, + { STATE_DATA, "open-checksum", STATE_OPENCHECKSUM, 1 }, + { STATE_DATA, "size", STATE_SIZE, 1 }, { NUMSTATES } }; @@ -232,7 +234,6 @@ startElement(void *userData, const char *name, const char **atts) switch(pd->state) { - case STATE_START: break; case STATE_REPOMD: { const char *updstr; @@ -254,14 +255,8 @@ startElement(void *userData, const char *name, const char **atts) } free(fvalue); } - break; - } - case STATE_SUSEINFO: break; - case STATE_EXPIRE: break; - case STATE_KEYWORDS: break; - case STATE_KEYWORD: break; - case STATE_CONTENT: break; - case STATE_REVISION: break; + break; + } case STATE_DISTRO: { /* this is extra metadata about the product this repository @@ -338,7 +333,6 @@ endElement(void *userData, const char *name) pd->statedepth--; switch (pd->state) { - case STATE_START: break; case STATE_REPOMD: if (pd->timestamp > 0) repodata_set_num(pd->data, SOLVID_META, REPOSITORY_TIMESTAMP, pd->timestamp); @@ -348,7 +342,6 @@ endElement(void *userData, const char *name) repodata_add_flexarray(pd->data, SOLVID_META, REPOSITORY_REPOMD, pd->rdhandle); pd->rdhandle = 0; break; - case STATE_LOCATION: break; case STATE_CHECKSUM: case STATE_OPENCHECKSUM: @@ -384,34 +377,35 @@ endElement(void *userData, const char *name) /* repomd.xml content and suseinfo.xml keywords are equivalent */ case STATE_CONTENT: case STATE_KEYWORD: - if (pd->content) + if (*pd->content) repodata_add_poolstr_array(pd->data, SOLVID_META, REPOSITORY_KEYWORDS, pd->content); break; case STATE_REVISION: - if (pd->content) - repodata_add_poolstr_array(pd->data, SOLVID_META, REPOSITORY_REVISION, pd->content); + if (*pd->content) + repodata_set_str(pd->data, SOLVID_META, REPOSITORY_REVISION, pd->content); break; case STATE_DISTRO: /* distro tag is used in repomd.xml to say the product this repo is made for */ - if (pd->content) + if (*pd->content) repodata_set_str(pd->data, pd->rphandle, REPOSITORY_PRODUCT_LABEL, pd->content); repodata_add_flexarray(pd->data, SOLVID_META, REPOSITORY_DISTROS, pd->rphandle); break; case STATE_UPDATES: - /* distro tag is used in suseinfo.xml to say the repo updates a product + /* updates tag is used in suseinfo.xml to say the repo updates a product however it s not yet a tag standarized for repomd.xml */ - if (pd->content) + if (*pd->content) repodata_set_str(pd->data, pd->ruhandle, REPOSITORY_PRODUCT_LABEL, pd->content); repodata_add_flexarray(pd->data, SOLVID_META, REPOSITORY_UPDATES, pd->ruhandle); break; case STATE_REPO: - if (pd->content) + if (*pd->content) repodata_add_poolstr_array(pd->data, SOLVID_META, REPOSITORY_REPOID, pd->content); break; - case STATE_SUSEINFO: break; - case STATE_KEYWORDS: break; - case NUMSTATES: break; + case STATE_SIZE: + if (*pd->content) + repodata_set_num(pd->data, pd->rdhandle, REPOSITORY_REPOMD_SIZE, strtoull(pd->content, 0, 10)); + break; default: break; }