Module Name: src
Committed By: tls
Date: Sun Aug 10 06:58:21 UTC 2014
Modified Files:
src/usr.bin/locate/locate [tls-earlyentropy]: updatedb.sh
Log Message:
Rebase.
To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.14.18.1 src/usr.bin/locate/locate/updatedb.sh
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/locate/locate/updatedb.sh
diff -u src/usr.bin/locate/locate/updatedb.sh:1.14 src/usr.bin/locate/locate/updatedb.sh:1.14.18.1
--- src/usr.bin/locate/locate/updatedb.sh:1.14 Wed Jul 13 07:58:35 2011
+++ src/usr.bin/locate/locate/updatedb.sh Sun Aug 10 06:58:21 2014
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $NetBSD: updatedb.sh,v 1.14 2011/07/13 07:58:35 apb Exp $
+# $NetBSD: updatedb.sh,v 1.14.18.1 2014/08/10 06:58:21 tls Exp $
#
# Copyright (c) 1989, 1993
# The Regents of the University of California. All rights reserved.
@@ -61,20 +61,41 @@ SRCHPATHS=
# eval "\$command $quotedlist \$filename"
#
shell_quote()
-{
+{(
local result=''
- local arg
+ local arg qarg
+ LC_COLLATE=C ; export LC_COLLATE # so [a-zA-Z0-9] works in ASCII
for arg in "$@" ; do
- # Append a space if necessary
- result="${result}${result:+ }"
- # Convert each embedded ' to '\'',
- # then insert ' at the beginning of the first line,
- # and append ' at the end of the last line.
- result="${result}$(printf "%s\n" "$arg" | \
- sed -e "s/'/'\\\\''/g" -e "1s/^/'/" -e "\$s/\$/'/")"
+ case "${arg}" in
+ '')
+ qarg="''"
+ ;;
+ *[!-./a-zA-Z0-9]*)
+ # Convert each embedded ' to '\'',
+ # then insert ' at the beginning of the first line,
+ # and append ' at the end of the last line.
+ # Finally, elide unnecessary '' pairs at the
+ # beginning and end of the result and as part of
+ # '\'''\'' sequences that result from multiple
+ # adjacent quotes in he input.
+ qarg="$(printf "%s\n" "$arg" | \
+ ${SED:-sed} -e "s/'/'\\\\''/g" \
+ -e "1s/^/'/" -e "\$s/\$/'/" \
+ -e "1s/^''//" -e "\$s/''\$//" \
+ -e "s/'''/'/g"
+ )"
+ ;;
+ *)
+ # Arg is not the empty string, and does not contain
+ # any unsafe characters. Leave it unchanged for
+ # readability.
+ qarg="${arg}"
+ ;;
+ esac
+ result="${result}${result:+ }${qarg}"
done
printf "%s\n" "$result"
-}
+)}
# read configuration file
if [ -f "$CONF" ]; then