Wed 14 Jul 2010 08:11:50 PM UTC, comment #4:
Patches don't work for me when using the command-line option --prunepath as the asterisks are expanded in the "for arg" access of the implicit $@. As a workaround, wrapping my pattern with \( and \) works, like updatedb --prunepaths='\(.*/.svn\)'
Patches do work when setting the PRUNEPATH environment variable.
|
Sun 11 Apr 2010 11:56:38 AM UTC, comment #3:
updatedb would probably be best rewritten. I'm going to mark the updatedb-related bus as "Postponed" in order to consider them all in a batch, when I get around to the rewrite.
(Leslie P. Polzer did start on a rewrite some time back as part of the Summer of Code but there are some updatedb-related issues his changes don't resolve yet, I think)
|
Mon 09 Feb 2009 09:22:17 AM UTC, comment #2:
Here is a patch:
--- updatedb.org 2009-01-27 13:29:28.575086300 +0100
+++ updatedb 2009-02-09 10:19:41.132505500 +0100
@@ -163,7 +163,7 @@
# Trailing slashes result in regex items that are never matched, which
# is not what the user will expect. Therefore we now reject such
# constructs.
-for p in $PRUNEPATHS; do
+for p in "$PRUNEPATHS"; do
case "$p" in
/*/) echo "$0: $p: pruned paths should not contain trailing slashes" >&2
exit 1
@@ -172,7 +172,7 @@
# The same, in the form of a regex that find can use.
test -z "$PRUNEREGEX" &&
- PRUNEREGEX=`echo $PRUNEPATHS|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
+ PRUNEREGEX=`echo "$PRUNEPATHS"|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
# The database file to build.
: ${LOCATE_DB=/var/locatedb}
|
Wed 21 Mar 2007 06:21:47 PM UTC, original submission:
This is http://bugs.debian.org/415567
István Váradi writes: -----------------------
The updatedb script uses the PRUNEPATHS environment variable without quoting it. This causes some problems when putting regular expressions into the value of this variable. For example, if I use an asterisk () in a path, it will be expanded by the shell before using it as a regular expression. Thus, ./lost+found becomes ../lost+found (and possibly others, depending on how many files or directories, whose names start with a dot I have in the working directory).
---------------------------------------------
Afaict the fix should be trivial:
- for p in $PRUNEPATHS; do
+ for p in "$PRUNEPATHS"; do
[...]
- PRUNEREGEX=`echo $PRUNEPATHS|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
+ PRUNEREGEX=`echo "$PRUNEPATHS"|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
thanks, cu andreas
|