changeset 11037:d94dc78c3947

Improve func_remove_prefix, func_remove_suffix.
author Bruno Haible <bruno@clisp.org>
date Sun, 18 Jan 2009 04:07:35 +0100
parents e901ed0f1ffc
children 6c37790abb93
files ChangeLog gnulib-tool
diffstat 2 files changed, 24 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-01-17  Bruno Haible  <bruno@clisp.org>
+
+	* gnulib-tool (func_remove_prefix): Escape all dots in the prefix.
+	Update documentation.
+	(func_remove_suffix): Escape all dots in the suffix. Update
+	documentation.
+	(func_filter_filelist): Update documentation.
+	Reported by Ralf Wildenhues.
+
 2009-01-17  Bruno Haible  <bruno@clisp.org>
 
 	* modules/dprintf-posix-tests: New file.
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -411,7 +411,7 @@
 # removes the given prefix from the value of the shell variable var.
 # var should be the name of a shell variable.
 # Its value should not contain a newline and not start or end with whitespace.
-# prefix should not contain the characters "$`\{}|.
+# prefix should not contain the characters "$`\{}[]^|.
 if ( foo=bar; eval 'test "${foo#b}" = ar' ) >/dev/null 2>&1; then
   func_remove_prefix ()
   {
@@ -423,6 +423,12 @@
   {
     eval "value=\"\$$1\""
     prefix="$2"
+    case "$prefix" in
+      *.*)
+        sed_escape_dots='s/\([.]\)/\\\1/g'
+        prefix=`echo "$prefix" | sed -e "$sed_escape_dots"`
+        ;;
+    esac
     value=`echo "$value" | sed -e "s|^${prefix}||"`
     eval "$1=\"\$value\""
   }
@@ -433,7 +439,7 @@
 # removes the given suffix from the value of the shell variable var.
 # var should be the name of a shell variable.
 # Its value should not contain a newline and not start or end with whitespace.
-# suffix should not contain the characters "$`\{}|.
+# suffix should not contain the characters "$`\{}[]^|.
 if ( foo=bar; eval 'test "${foo%r}" = ba' ) >/dev/null 2>&1; then
   func_remove_suffix ()
   {
@@ -445,6 +451,12 @@
   {
     eval "value=\"\$$1\""
     suffix="$2"
+    case "$suffix" in
+      *.*)
+        sed_escape_dots='s/\([.]\)/\\\1/g'
+        suffix=`echo "$suffix" | sed -e "$sed_escape_dots"`
+        ;;
+    esac
     value=`echo "$value" | sed -e "s|${suffix}\$||"`
     eval "$1=\"\$value\""
   }
@@ -1379,7 +1391,7 @@
 # elements starting with prefix and ending with suffix are considered.
 # Processing: removed_prefix and removed_suffix are removed from each element,
 # added_prefix and added_suffix are added to each element.
-# removed_prefix, removed_suffix should not contain the characters "$`\{}|.
+# removed_prefix, removed_suffix should not contain the characters "$`\{}[]^|.
 # added_prefix, added_suffix should not contain the characters \|.
 func_filter_filelist ()
 {