Author: dmacvicar Date: Fri Sep 12 15:12:34 2008 New Revision: 11040 URL: http://svn.opensuse.org/viewcvs/zypp?rev=11040&view=rev Log: make url ids extensible and fix parsers. parse urls in products Modified: trunk/sat-solver/package/libsatsolver.changes trunk/sat-solver/src/knownid.h trunk/sat-solver/tools/repo_content.c trunk/sat-solver/tools/repo_products.c trunk/sat-solver/tools/repo_rpmmd.c Modified: trunk/sat-solver/package/libsatsolver.changes URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/package/libsatsolver.changes?rev=11040&r1=11039&r2=11040&view=diff ============================================================================== --- trunk/sat-solver/package/libsatsolver.changes (original) +++ trunk/sat-solver/package/libsatsolver.changes Fri Sep 12 15:12:34 2008 @@ -3,6 +3,7 @@ - add repo_add_poolstr_array - move updates="key,key.." to repomd.xml +- make product url ids more extensible - 0.10.11 ------------------------------------------------------------------- Modified: trunk/sat-solver/src/knownid.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/knownid.h?rev=11040&r1=11039&r2=11040&view=diff ============================================================================== --- trunk/sat-solver/src/knownid.h (original) +++ trunk/sat-solver/src/knownid.h Fri Sep 12 15:12:34 2008 @@ -156,6 +156,7 @@ KNOWNID(PRODUCT_URL_TYPE_RELNOTES, "product:url:type:relnotes"), KNOWNID(PRODUCT_URL_TYPE_EXTRA, "product:url:type:extra"), KNOWNID(PRODUCT_URL_TYPE_OPTIONAL, "product:url:type:optional"), +KNOWNID(PRODUCT_URL_TYPE_UPDATE, "product:url:type:update"), KNOWNID(PRODUCT_FLAGS, "product:flags"), KNOWNID(PRODUCT_FLAVOR, "product:flavor"), KNOWNID(PRODUCT_REFERENCES, "product:references"), Modified: trunk/sat-solver/tools/repo_content.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/tools/repo_content.c?rev=11040&r1=11039&r2=11040&view=diff ============================================================================== --- trunk/sat-solver/tools/repo_content.c (original) +++ trunk/sat-solver/tools/repo_content.c Fri Sep 12 15:12:34 2008 @@ -203,6 +203,28 @@ } } +/* + * split value and add to pool + */ + +static void +add_multiple_urls(Repodata *data, Id handle, char *value, Id type) +{ + char *sp[2]; + while (value) + { + int words = split(value, sp, 2); + if (!words) + break; + repodata_add_poolstr_array(data, handle, PRODUCT_URL, sp[0]); + repodata_add_idarray(data, handle, PRODUCT_URL_TYPE, type); + if (words == 1) + break; + value = sp[1]; + } +} + + /* * add 'content' to repo @@ -333,11 +355,13 @@ else if (istag ("DATADIR")) repo_set_str(repo, s - pool->solvables, SUSETAGS_DATADIR, value); else if (istag ("UPDATEURLS")) - add_multiple_strings(data, handle, PRODUCT_UPDATEURLS, value); + add_multiple_urls(data, handle, value, PRODUCT_URL_TYPE_UPDATE); else if (istag ("EXTRAURLS")) - add_multiple_strings(data, handle, PRODUCT_EXTRAURLS, value); + add_multiple_urls(data, handle, value, PRODUCT_URL_TYPE_EXTRA); else if (istag ("OPTIONALURLS")) - add_multiple_strings(data, handle, PRODUCT_OPTIONALURLS, value); + add_multiple_urls(data, handle, value, PRODUCT_URL_TYPE_OPTIONAL); + else if (istag ("RELNOTESURL")) + add_multiple_urls(data, handle, value, PRODUCT_URL_TYPE_RELNOTES); else if (istag ("SHORTLABEL")) repo_set_str(repo, s - pool->solvables, PRODUCT_SHORTLABEL, value); else if (istag ("LABEL")) /* LABEL is the products SUMMARY. */ @@ -346,8 +370,6 @@ repo_set_str(repo, s - pool->solvables, pool_id2langid(pool, SOLVABLE_SUMMARY, key + 6, 1), value); else if (istag ("FLAGS")) add_multiple_strings(data, handle, PRODUCT_FLAGS, value); - else if (istag ("RELNOTESURL")) - repodata_add_poolstr_array(data, handle, PRODUCT_RELNOTESURL, value); else if (istag ("VENDOR")) s->vendor = str2id(pool, value, 1); else if (istag ("BASEARCHS")) Modified: trunk/sat-solver/tools/repo_products.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/tools/repo_products.c?rev=11040&r1=11039&r2=11040&view=diff ============================================================================== --- trunk/sat-solver/tools/repo_products.c (original) +++ trunk/sat-solver/tools/repo_products.c Fri Sep 12 15:12:34 2008 @@ -91,7 +91,7 @@ #endif { STATE_PRODUCT, "linguas", STATE_LINGUAS, 0 }, { STATE_PRODUCT, "updaterepokey", STATE_UPDATEREPOKEY, 1 }, - { STATE_URLS, "url", STATE_URL, 0 }, + { STATE_URLS, "url", STATE_URL, 1 }, /* { STATE_BUILDCONFIG,"linguas", STATE_LINGUAS, 0 }, */ { STATE_LINGUAS, "lang", STATE_LANG, 0 }, { STATE_REGISTER, "flavor", STATE_FLAVOR, 1 }, @@ -306,8 +306,21 @@ case STATE_URL: if (pd->tmpurltype) { + Id type = 0; repodata_add_poolstr_array(pd->data, pd->handle, PRODUCT_URL, pd->content); - repodata_add_poolstr_array(pd->data, pd->handle, PRODUCT_URL_TYPE, pd->content); + + if ( pd->tmpurltype[0] == 's' ) + type = PRODUCT_URL_TYPE_SMOLT; + else if ( pd->tmpurltype[0] == 'u' ) + type = PRODUCT_URL_TYPE_UPDATE; + else if ( pd->tmpurltype[0] == 'o' ) + type = PRODUCT_URL_TYPE_OPTIONAL; + else if ( pd->tmpurltype[0] == 'r' ) + type = PRODUCT_URL_TYPE_RELNOTES; + else + type = PRODUCT_URL_TYPE_EXTRA; + + repodata_add_idarray(pd->data, pd->handle, PRODUCT_URL_TYPE, type); } break; case STATE_TARGET: Modified: trunk/sat-solver/tools/repo_rpmmd.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/tools/repo_rpmmd.c?rev=11040&r1=11039&r2=11040&view=diff ============================================================================== --- trunk/sat-solver/tools/repo_rpmmd.c (original) +++ trunk/sat-solver/tools/repo_rpmmd.c Fri Sep 12 15:12:34 2008 @@ -1012,15 +1012,24 @@ break; case STATE_RELNOTESURL: if (pd->content[0]) - repodata_set_poolstr(pd->data, handle, PRODUCT_RELNOTESURL, pd->content); + { + repodata_add_poolstr_array(pd->data, pd->handle, PRODUCT_URL, pd->content); + repodata_add_idarray(pd->data, pd->handle, PRODUCT_URL_TYPE, PRODUCT_URL_TYPE_RELNOTES); + } break; case STATE_UPDATEURL: if (pd->content[0]) - repodata_set_poolstr(pd->data, handle, PRODUCT_EXTRAURLS, pd->content); + { + repodata_add_poolstr_array(pd->data, pd->handle, PRODUCT_URL, pd->content); + repodata_add_idarray(pd->data, pd->handle, PRODUCT_URL_TYPE, PRODUCT_URL_TYPE_UPDATE); + } break; case STATE_OPTIONALURL: if (pd->content[0]) - repodata_set_poolstr(pd->data, handle, PRODUCT_OPTIONALURLS, pd->content); + { + repodata_add_poolstr_array(pd->data, pd->handle, PRODUCT_URL, pd->content); + repodata_add_idarray(pd->data, pd->handle, PRODUCT_URL_TYPE, PRODUCT_URL_TYPE_OPTIONAL); + } break; case STATE_FLAG: if (pd->content[0]) -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org