diff options
Diffstat (limited to 'bin/darwin/sed')
-rwxr-xr-x | bin/darwin/sed | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/bin/darwin/sed b/bin/darwin/sed new file mode 100755 index 0000000000..352a3ca6e8 --- /dev/null +++ b/bin/darwin/sed @@ -0,0 +1,65 @@ +#!/bin/sh +# +# Sed portability notes +# - SuSv3 +# - Only -e, -f, and -n are standard options +# - Linux +# - -i argument is of the form -i[ext] +# - extended regular expressions argument is -r +# - Mac OSX +# - -i argument is of the form -i [ext] +# - extended regular expressions argument is -E +# +# Here we support a limited subset of the available sed capabilities, +# ensuring that all those supported by this script can be utilized +# regardless of the current platform. +# +# We accept -n, -e, -f, and -i with no backup extension. We support +# extended regular expressions using the -r argument. Note that extended +# regular expressions support may not be retained, depending upon the +# capabilities of the other platforms we wish to support, and we may need +# to reimplement -i internally in this script on some platforms. + + +source $(dirname $0)/wrapper.sh + +case `uname -s` in + Darwin) + inplace_arg="-i ''" + extended_re_arg="-E" + getopt_os="ir" + ;; + Linux) + inplace_arg="-i" + extended_re_arg="-r" + getopt_os="ir" + ;; +esac + +saved="" +while getopts ne:f:$getopt_os opt; do + case "$opt" in + n) + save "-$opt" + ;; + e|f) + save "-$opt" + save "$OPTARG" + ;; + i) + saved="$saved $inplace_arg" + ;; + r) + saved="$saved $extended_re_arg" + ;; + \?) + exit 1 + ;; + esac +done +shift $(($OPTIND - 1)) +for arg; do + save "$arg" +done + +exec_real |