From: Michael Schroeder Date: Tue, 18 Sep 2018 12:57:36 +0000 (+0200) Subject: repo_rpmdb: use new repodata_search_arrayelement method X-Git-Tag: 0.7.0~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac58625bfaae2d0fcfd51762cea9fcbf3f4ff75e;p=thirdparty%2Flibsolv.git repo_rpmdb: use new repodata_search_arrayelement method --- diff --git a/ext/repo_rpmdb.c b/ext/repo_rpmdb.c index e01993ce..a2d518f0 100644 --- a/ext/repo_rpmdb.c +++ b/ext/repo_rpmdb.c @@ -1411,21 +1411,17 @@ solvable_copy_cb(void *vcbdata, Solvable *r, Repodata *fromdata, Repokey *key, K case REPOKEY_TYPE_DIRSTRARRAY: kv->id = repodata_translate_dir(data, fromdata, kv->id, 1, fromdata->repodataid == 1 ? cbdata->dircache : 0); break; + case REPOKEY_TYPE_FIXARRAY: + cbdata->handle = repodata_new_handle(data); + repodata_add_fixarray(data, handle, key->name, cbdata->handle); + repodata_search_arrayelement(fromdata, 0, 0, 0, kv, &solvable_copy_cb, cbdata); + cbdata->handle = handle; + return 0; case REPOKEY_TYPE_FLEXARRAY: - if (kv->eof == 2) - { - assert(cbdata->subhandle); - cbdata->handle = cbdata->subhandle; - cbdata->subhandle = 0; - break; - } - if (!kv->entry) - { - assert(!cbdata->subhandle); - cbdata->subhandle = cbdata->handle; - } cbdata->handle = repodata_new_handle(data); - repodata_add_flexarray(data, cbdata->subhandle, key->name, cbdata->handle); + repodata_add_flexarray(data, handle, key->name, cbdata->handle); + repodata_search_arrayelement(fromdata, 0, 0, 0, kv, &solvable_copy_cb, cbdata); + cbdata->handle = handle; return 0; default: break; @@ -1470,19 +1466,15 @@ solvable_copy(Solvable *s, Solvable *r, Repodata *data, Id *dircache, Id **oldke { Repodata *fromdata = repo_id2repodata(fromrepo, 1); if (p >= fromdata->start && p < fromdata->end) - repodata_search(fromdata, p, 0, SEARCH_SUB | SEARCH_ARRAYSENTINEL, solvable_copy_cb, &cbdata); + repodata_search(fromdata, p, 0, 0, solvable_copy_cb, &cbdata); return; } -#if 0 - repo_search(fromrepo, p, 0, 0, SEARCH_NO_STORAGE_SOLVABLE | SEARCH_SUB | SEARCH_ARRAYSENTINEL, solvable_copy_cb, &cbdata); -#else keyskip = repo_create_keyskip(repo, p, oldkeyskip); FOR_REPODATAS(fromrepo, i, data) { if (p >= data->start && p < data->end) - repodata_search_keyskip(data, p, 0, SEARCH_SUB | SEARCH_ARRAYSENTINEL, keyskip, solvable_copy_cb, &cbdata); + repodata_search_keyskip(data, p, 0, 0, keyskip, solvable_copy_cb, &cbdata); } -#endif } /* used to sort entries by package name that got returned in some database order */