From: Panu Matilainen Date: Sun, 30 Nov 2008 11:51:32 +0000 (+0200) Subject: Move netsharedpaths to per-transaction level X-Git-Tag: tznext/4.11.0.1.tizen20130304~3307 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5dfc982dda733dbf06128358816bf6d91cd18c2a;p=tools%2Flibrpm-tizen.git Move netsharedpaths to per-transaction level - netsharedpaths is clearly a per-transaction thing, avoid checking and splitting etc over and over for every package --- diff --git a/lib/rpmts.c b/lib/rpmts.c index 4d3bf03..498ee66 100644 --- a/lib/rpmts.c +++ b/lib/rpmts.c @@ -599,6 +599,7 @@ rpmts rpmtsFree(rpmts ts) ts->orderAlloced = 0; ts->keyring = rpmKeyringFree(ts->keyring); + ts->netsharedPaths = argvFree(ts->netsharedPaths); if (_rpmts_stats) rpmtsPrintStats(ts); @@ -1108,6 +1109,14 @@ rpmts rpmtsCreate(void) ts->color = rpmExpandNumeric("%{?_transaction_color}"); ts->prefcolor = rpmExpandNumeric("%{?_prefer_color}")?:2; + ts->netsharedPaths = NULL; + { char *tmp = rpmExpand("%{_netsharedpath}", NULL); + if (tmp && *tmp != '%') { + argvSplit(&ts->netsharedPaths, tmp, ":"); + } + free(tmp); + } + ts->numRemovedPackages = 0; ts->allocedRemovedPackages = ts->delta; ts->removedPackages = xcalloc(ts->allocedRemovedPackages, diff --git a/lib/rpmts_internal.h b/lib/rpmts_internal.h index 3bf597d..f138d87 100644 --- a/lib/rpmts_internal.h +++ b/lib/rpmts_internal.h @@ -88,6 +88,8 @@ struct rpmts_s { rpmKeyring keyring; /*!< Keyring in use. */ + ARGV_t netsharedPaths; /*!< From %{_netsharedpath} */ + struct rpmop_s ops[RPMTS_OP_MAX]; rpmSpec spec; /*!< Spec file control structure. */ diff --git a/lib/transaction.c b/lib/transaction.c index d4465cb..a76b1a8 100644 --- a/lib/transaction.c +++ b/lib/transaction.c @@ -394,7 +394,6 @@ static void skipFiles(const rpmts ts, rpmfi fi) rpm_color_t FColor; int noConfigs = (rpmtsFlags(ts) & RPMTRANS_FLAG_NOCONFIGS); int noDocs = (rpmtsFlags(ts) & RPMTRANS_FLAG_NODOCS); - ARGV_t netsharedPaths = NULL; ARGV_t languages = NULL; const char * dn, * bn; size_t dnlen, bnlen; @@ -407,13 +406,6 @@ static void skipFiles(const rpmts ts, rpmfi fi) if (!noDocs) noDocs = rpmExpandNumeric("%{_excludedocs}"); - { char *tmpPath = rpmExpand("%{_netsharedpath}", NULL); - if (tmpPath && *tmpPath != '%') { - argvSplit(&netsharedPaths, tmpPath, ":"); - } - tmpPath = _free(tmpPath); - } - s = rpmExpand("%{_install_langs}", NULL); if (!(s && *s != '%')) s = _free(s); @@ -464,7 +456,7 @@ static void skipFiles(const rpmts ts, rpmfi fi) * Net shared paths are not relative to the current root (though * they do need to take package relocations into account). */ - for (nsp = netsharedPaths; nsp && *nsp; nsp++) { + for (nsp = ts->netsharedPaths; nsp && *nsp; nsp++) { size_t len; len = strlen(*nsp); @@ -597,7 +589,6 @@ static void skipFiles(const rpmts ts, rpmfi fi) } } - if (netsharedPaths) argvFree(netsharedPaths); if (languages) argvFree(languages); free(drc); free(dff);