ts->keyring = rpmKeyringFree(ts->keyring);
ts->netsharedPaths = argvFree(ts->netsharedPaths);
+ ts->installLangs = argvFree(ts->installLangs);
if (_rpmts_stats)
rpmtsPrintStats(ts);
ts->prefcolor = rpmExpandNumeric("%{?_prefer_color}")?:2;
ts->netsharedPaths = NULL;
+ ts->installLangs = NULL;
{ char *tmp = rpmExpand("%{_netsharedpath}", NULL);
if (tmp && *tmp != '%') {
argvSplit(&ts->netsharedPaths, tmp, ":");
}
free(tmp);
+
+ tmp = rpmExpand("%{_install_langs}", NULL);
+ if (tmp && *tmp != '%') {
+ ARGV_t langs = NULL;
+ argvSplit(&langs, tmp, ":");
+ /* If we'll be installing all languages anyway, don't bother */
+ for (ARGV_t l = langs; *l; l++) {
+ if (strcmp(*l, "all") == 0) {
+ langs = argvFree(langs);
+ break;
+ }
+ }
+ ts->installLangs = langs;
+ }
+ free(tmp);
}
ts->numRemovedPackages = 0;
rpmKeyring keyring; /*!< Keyring in use. */
ARGV_t netsharedPaths; /*!< From %{_netsharedpath} */
+ ARGV_t installLangs; /*!< From %{_install_langs} */
struct rpmop_s ops[RPMTS_OP_MAX];
rpm_color_t FColor;
int noConfigs = (rpmtsFlags(ts) & RPMTRANS_FLAG_NOCONFIGS);
int noDocs = (rpmtsFlags(ts) & RPMTRANS_FLAG_NODOCS);
- ARGV_t languages = NULL;
const char * dn, * bn;
size_t dnlen, bnlen;
char * s;
if (!noDocs)
noDocs = rpmExpandNumeric("%{_excludedocs}");
- s = rpmExpand("%{_install_langs}", NULL);
- if (!(s && *s != '%'))
- s = _free(s);
- if (s) {
- argvSplit(&languages, s, ":");
- s = _free(s);
- } else
- languages = NULL;
-
/* Compute directory refcount, skip directory if now empty. */
dc = rpmfiDC(fi);
drc = xcalloc(dc, sizeof(*drc));
/*
* Skip i18n language specific files.
*/
- flangs = rpmfiFLangs(fi);
- if (languages != NULL && flangs != NULL) {
+ if (ts->installLangs != NULL && (flangs = rpmfiFLangs(fi)) != NULL) {
const char *l, *le;
char **lang;
- for (lang = languages; *lang != NULL; lang++) {
- if (!strcmp(*lang, "all"))
- break;
+ for (lang = ts->installLangs; *lang != NULL; lang++) {
for (l = flangs; *l != '\0'; l = le) {
for (le = l; *le != '\0' && *le != '|'; le++)
{};
}
}
- if (languages) argvFree(languages);
free(drc);
free(dff);
}