commit:     c4edb9ca3a6c1b23a748c057094ab5089523aada
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 19 22:40:32 2017 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Sep 19 23:15:43 2017 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=c4edb9ca

postinst-qa-check.d: fix [[ ${files[@]} ]] logic in for loops

Use a separate all_files array to accumulate the results
from all loops, so that [[ ${files[@]} ]] only checks for
files found during the current loop.

 bin/postinst-qa-check.d/50gnome2-utils |  9 +++++----
 bin/postinst-qa-check.d/50xdg-utils    | 14 ++++++++------
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/bin/postinst-qa-check.d/50gnome2-utils 
b/bin/postinst-qa-check.d/50gnome2-utils
index 84025ab83..077a04918 100644
--- a/bin/postinst-qa-check.d/50gnome2-utils
+++ b/bin/postinst-qa-check.d/50gnome2-utils
@@ -1,12 +1,12 @@
 # check for missing calls to gnome2-utils regen functions
 
 gnome2_icon_cache_check() {
-       local d f files=() find_args
+       local d f all_files=() find_args
        for d in usr/share/icons/*/; do
                # gnome2_icon_cache_update updates only themes with an index
                [[ -f ${d}/index.theme ]] || continue
 
-               find_args=(
+               local files=() find_args=(
                        # gtk-update-icon-cache supports only specific file
                        # suffixes; match that to avoid false positives
                        '(' -name '*.png' -o -name '*.svg'
@@ -27,15 +27,16 @@ gnome2_icon_cache_check() {
                # (note: yes, it will eagerly repeat the update for next dirs
                # but that's a minor issue)
                if [[ ${files[@]} ]]; then
+                       all_files+=("${files[@]}")
                        addwrite "${d}"
                        gtk-update-icon-cache -qf "${d}"
                fi
        done
 
-       if [[ ${files[@]} ]]; then
+       if [[ ${all_files[@]} ]]; then
                eqawarn "QA Notice: new icons were found installed but GTK+ 
icon cache"
                eqawarn "has not been updated:"
-               eqatag -v gnome2-utils.icon-cache "${files[@]/#//}"
+               eqatag -v gnome2-utils.icon-cache "${all_files[@]/#//}"
                eqawarn "Please make sure to call gnome2_icon_cache_update()"
                eqawarn "in pkg_postinst() and pkg_postrm() phases of 
appropriate pkgs."
        fi

diff --git a/bin/postinst-qa-check.d/50xdg-utils 
b/bin/postinst-qa-check.d/50xdg-utils
index 9f5e9a48c..410aceb88 100644
--- a/bin/postinst-qa-check.d/50xdg-utils
+++ b/bin/postinst-qa-check.d/50xdg-utils
@@ -5,7 +5,7 @@ xdg_desktop_database_check() {
        for d in usr/share/applications; do
                [[ -d ${d} ]] || continue
 
-               find_args=()
+               local files=() find_args=()
                # if the cache does not exist at all, we complain for any file
                # otherwise, we look for files newer than the cache
                [[ -f ${d}/mimeinfo.cache ]] &&
@@ -23,15 +23,16 @@ xdg_desktop_database_check() {
                # (note: yes, it will eagerly repeat the update for next dirs
                # but it's a minor issue and we have only one dir anyway)
                if [[ ${files[@]} ]]; then
+                       all_files+=("${files[@]}")
                        addwrite "${d}"
                        update-desktop-database "${d}"
                fi
        done
 
-       if [[ ${files[@]} ]]; then
+       if [[ ${all_files[@]} ]]; then
                eqawarn "QA Notice: .desktop files with MimeType= were found 
installed"
                eqawarn "but desktop mimeinfo cache has not been updated:"
-               eqatag -v xdg-utils.desktop "${files[@]/#//}"
+               eqatag -v xdg-utils.desktop "${all_files[@]/#//}"
                eqawarn "Please make sure to call xdg_desktop_database_update()"
                eqawarn "in pkg_postinst() and pkg_postrm() phases of 
appropriate pkgs."
        fi
@@ -42,7 +43,7 @@ xdg_mimeinfo_database_check() {
        for d in usr/share/mime; do
                [[ -d ${d} ]] || continue
 
-               find_args=()
+               local files=() find_args=()
                # if the cache does not exist at all, we complain for any file
                # otherwise, we look for files newer than the cache
                [[ -f ${d}/mime.cache ]] &&
@@ -57,15 +58,16 @@ xdg_mimeinfo_database_check() {
                # (note: yes, it will eagerly repeat the update for next dirs
                # but it's a minor issue and we have only one dir anyway)
                if [[ ${files[@]} ]]; then
+                       all_files+=("${files[@]}")
                        addwrite "${d}"
                        update-mime-database "${d}"
                fi
        done
 
-       if [[ ${files[@]} ]]; then
+       if [[ ${all_files[@]} ]]; then
                eqawarn "QA Notice: mime-info files were found installed but 
mime-info"
                eqawarn "cache has not been updated:"
-               eqatag -v xdg-utils.mime-info "${files[@]/#//}"
+               eqatag -v xdg-utils.mime-info "${all_files[@]/#//}"
                eqawarn "Please make sure to call 
xdg_mimeinfo_database_update()"
                eqawarn "in pkg_postinst() and pkg_postrm() phases of 
appropriate pkgs."
        fi

Reply via email to