summaryrefslogtreecommitdiff
path: root/gnulib-tool
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2009-03-01 18:44:45 +0100
committerBruno Haible <bruno@clisp.org>2009-03-01 18:44:45 +0100
commit3b765946c7ef6e3139750ca7956aa72835ff22c3 (patch)
tree26a4ee10410a0a94fba857a5c5f0db0a76a3fbcb /gnulib-tool
parentf3597013e3eb1aa59d16aa6c453fd806859b9898 (diff)
downloadgnulib-3b765946c7ef6e3139750ca7956aa72835ff22c3.tar.gz
Re-enable the use of "sed --posix" with sed >= 4.2.
Diffstat (limited to 'gnulib-tool')
-rwxr-xr-xgnulib-tool44
1 files changed, 24 insertions, 20 deletions
diff --git a/gnulib-tool b/gnulib-tool
index 4f254b4a78..5882c68b7c 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -63,28 +63,32 @@ if test -z "${AUTOPOINT}" || test -n "${GETTEXTPATH}"; then
AUTOPOINT="${GETTEXTPATH}autopoint"
fi
-# Disabled because "sed --posix" is buggy in GNU sed 4.1.5, see
+# When using GNU sed, turn off as many GNU extensions as possible,
+# to minimize the risk of accidentally using non-portable features.
+# However, do this only for gnulib-tool itself, not for the code that
+# gnulib-tool generates, since we don't want "sed --posix" to leak
+# into makefiles. And do it only for sed versions 4.2 or newer,
+# because "sed --posix" is buggy in GNU sed 4.1.5, see
# <http://lists.gnu.org/archive/html/bug-gnulib/2009-02/msg00225.html>.
-if false; then
- # When using GNU sed, turn off as many GNU extensions as possible,
- # to minimize the risk of accidentally using non-portable features.
- # However, do this only for gnulib-tool itself, not for the code that
- # 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'
+if (alias) > /dev/null 2>&1 \
+ && echo | sed --posix -e d >/dev/null 2>&1 \
+ && case `sed --version | sed -e 's/^[^0-9]*//' -e 1q` in \
+ [1-3]* | 4.[01]*) false;; \
+ *) true;; \
+ esac \
+ ; 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
# sed_noop is a sed expression that does nothing.