Bug #173284 - Do not traverse hidden directories such as .svn or .git when
authorZac Medico <zmedico@gentoo.org>
Sat, 15 Nov 2008 06:03:23 +0000 (06:03 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 15 Nov 2008 06:03:23 +0000 (06:03 -0000)
search for protected files. (trunk r11927:11929)

svn path=/main/branches/2.1.6/; revision=11930

bin/dispatch-conf
bin/etc-update

index 07131b55ee053918d02283e55fa0ed61fe97e387..76f9b0c0484a6741b3ce23778fc3712c1b2944f0 100755 (executable)
@@ -28,7 +28,7 @@ except ImportError:
 from portage import dispatch_conf
 from portage.process import find_binary
 
-FIND_EXTANT_CONFIGS  = "find '%s' %s -iname '._cfg????_%s' ! -iname '.*~' ! -iname '.*.bak'"
+FIND_EXTANT_CONFIGS  = "find '%s' %s -name '._cfg????_%s' ! -name '.*~' ! -iname '.*.bak' -print"
 DIFF_CONTENTS        = "diff -Nu '%s' '%s'"
 DIFF_CVS_INTERP      = "diff -Nu '%s' '%s' | grep '^[+-][^+-]' | grep -v '# .Header:.*'"
 DIFF_WSCOMMENTS      = "diff -Nu '%s' '%s' | grep '^[+-][^+-]' | grep -v '^[-+]#' | grep -v '^[-+][:space:]*$'"
@@ -93,11 +93,12 @@ class dispatch:
             except OSError:
                 continue
             basename = "*"
-            find_opts = ""
+            find_opts = "-name '.*' -type d -prune -o"
             if not stat.S_ISDIR(mymode):
                 path, basename = os.path.split(path)
                 find_opts = "-maxdepth 1"
 
+            print FIND_EXTANT_CONFIGS % (path, find_opts, basename)
             confs += self.massage(os.popen(FIND_EXTANT_CONFIGS % (path, find_opts, basename)).readlines())
 
         if self.options['use-rcs'] == 'yes':
index cb58d13f1fdaa206b43df4f39730aaf47fe9adae..4d29007f99ffa617858c11feae232568cca40e99 100755 (executable)
@@ -50,17 +50,19 @@ scan() {
 
        for path in ${CONFIG_PROTECT} ; do
                path="${ROOT}${path}"
-               find_opts="-iname ._cfg????_*"
+               # Do not traverse hidden directories such as .svn or .git.
+               find_opts="-name .* -type d -prune -o -name ._cfg????_*"
                if [ ! -d "${path}" ]; then
                        [ ! -f "${path}" ] && continue
                        my_basename="${path##*/}"
                        path="${path%/*}"
-                       find_opts="-maxdepth 1 -iname ._cfg????_${my_basename}"
+                       find_opts="-maxdepth 1 -name ._cfg????_${my_basename}"
                fi
 
                ofile=""
                # The below set -f turns off file name globbing in the ${find_opts} expansion.
-               for file in $(set -f; find ${path}/ ${find_opts} ! -iname '.*~' ! -iname '.*.bak' |
+               for file in $(set -f ; find ${path}/ ${find_opts} \
+                      ! -name '.*~' ! -iname '.*.bak' -print |
                           sed -e "s:\(^.*/\)\(\._cfg[0-9]*_\)\(.*$\):\1\2\3\%\2\%\3:" |
                           sort -t'%' -k3 -k2 | LANG=POSIX LC_ALL=POSIX cut -f1 -d'%'); do