changeset 9213:6c916785c03e

Try harder to enable the alias for 'sed'.
author Bruno Haible <bruno@clisp.org>
date Sun, 16 Sep 2007 00:41:34 +0000
parents 09cf746577d7
children 39a1b395c333
files ChangeLog gnulib-tool
diffstat 2 files changed, 18 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Sep 13 13:52:18 2007 +0000
+++ b/ChangeLog	Sun Sep 16 00:41:34 2007 +0000
@@ -1,3 +1,9 @@
+2007-09-15  Bruno Haible  <bruno@clisp.org>
+
+	* gnulib-tool (sed): Try a little harder to make bash understand the
+	alias.
+	Reported by Bruce Korb <bruce.korb@gmail.com>.
+
 2007-09-13  Eric Blake  <ebb9@byu.net>
 
 	* ChangeLog: Remove conflict markers.
--- a/gnulib-tool	Thu Sep 13 13:52:18 2007 +0000
+++ b/gnulib-tool	Sun Sep 16 00:41:34 2007 +0000
@@ -22,7 +22,7 @@
 
 progname=$0
 package=gnulib
-cvsdatestamp='$Date: 2007-09-09 12:17:36 $'
+cvsdatestamp='$Date: 2007-09-16 00:41:34 $'
 last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'`
 version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'`
 nl='
@@ -73,6 +73,17 @@
 # gnulib-tool generates, since we don't want "sed --posix" to leak
 # into makefiles.
 if (alias) > /dev/null 2>&1 && echo | sed --posix -e d >/dev/null 2>&1; then
+  # Define sed as an alias.
+  # It is not always possible to use aliases. Aliases are guaranteed to work
+  # if the executing shell is bash and either it is invoked as /bin/sh or
+  # is a version >= 2.0, supporting shopt. This is the common case.
+  # Two other approaches (use of a variable $sed or of a function func_sed
+  # instead of an alias) require massive, fragile code changes.
+  # An other approach (use of function sed) requires `which sed` - but 'which'
+  # is hard to emulate, due to missing "test -x" on some platforms.
+  if test -n "$BASH_VERSION"; then
+    shopt -s expand_aliases >/dev/null 2>&1
+  fi
   alias sed='sed --posix'
 fi