For bug #14321, make dispatch-conf scan for individual files listed in CONFIG_PROTECT.
authorZac Medico <zmedico@gentoo.org>
Sat, 16 Sep 2006 00:50:38 +0000 (00:50 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 16 Sep 2006 00:50:38 +0000 (00:50 -0000)
svn path=/main/trunk/; revision=4461

bin/dispatch-conf

index f5bf9e5786f46374bc68bad9dac01664a6208761..960a38312f543b745cf86d12670b052776ca9eca 100755 (executable)
 
 from stat import *
 from random import *
-import os, shutil, sys, string, re, commands, atexit
+import atexit, commands, os, re, shutil, stat, string, sys
 sys.path = ["/usr/lib/portage/pym"]+sys.path
 
 import portage, dispatch_conf
 from portage_exec import find_binary
 
-FIND_EXTANT_CONFIGS  = "find %s/ -iname '._cfg????_*' | sed -e 's://:/:g'"
+FIND_EXTANT_CONFIGS  = "find '%s' %s -iname '._cfg????_%s'"
 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:]*$"'
@@ -79,10 +79,18 @@ class dispatch:
         #
 
         for path in config_paths.split ():
-            if not os.path.exists (path):
+            path = portage.normalize_path(path)
+            try:
+                mymode = os.lstat(path).st_mode
+            except OSError:
                 continue
+            basename = "*"
+            find_opts = ""
+            if not stat.S_ISDIR(mymode):
+                path, basename = os.path.split(path)
+                find_opts = "-maxdepth 1"
 
-            confs += self.massage (os.popen (FIND_EXTANT_CONFIGS % (path,)).readlines ())
+            confs += self.massage(os.popen(FIND_EXTANT_CONFIGS % (path, find_opts, basename)).readlines())
 
         if self.options['use-rcs'] == 'yes':
             for rcs_util in ("rcs", "ci", "co", "rcsmerge"):