aboutsummaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorChris Larson <chris_larson@mentor.com>2010-11-04 11:21:38 -0700
committerChris Larson <chris_larson@mentor.com>2010-11-04 11:21:38 -0700
commitc35b4a0846ea9867ed1eeea94a465019a22b6b6c (patch)
treeccc8da121f37eaf854900396015d0e37f118304c /bin
parent3620e5ee5e3e32b592c949b18d2fc06f58024590 (diff)
downloadopenembedded-c35b4a0846ea9867ed1eeea94a465019a22b6b6c.tar.gz
bin/{cp,sed}: simplify, consolidate
Signed-off-by: Chris Larson <chris_larson@mentor.com>
Diffstat (limited to 'bin')
-rwxr-xr-xbin/cp37
-rwxr-xr-xbin/sed43
-rw-r--r--bin/wrapper.sh29
3 files changed, 35 insertions, 74 deletions
diff --git a/bin/cp b/bin/cp
index 81fdbe8d5c..0a523b7987 100755
--- a/bin/cp
+++ b/bin/cp
@@ -6,40 +6,8 @@
# - We allow -a as shorthand for -RpP
# - Otherwise, we stick to what SuSv3 defines
-realbin() {
- _script=`basename $0`
- found=
- for bin in `which -a $_script`; do
- if ! cmp -s $bin $0; then
- found=$bin
- break
- fi
- done
- if [ -n "$found" ]; then
- echo "$found"
- else
- return 1
- fi
-}
-quote(){
- /usr/bin/sed -e "s,','\\\\'',g; 1s,^,',; \$s,\$,',;" << EOF
-$1
-EOF
-}
-
-save () {
- case "$1" in
- # when a string contains a "'" we have to escape it
- *\'*)
- saved="$saved `quote "$1"`"
- ;;
- # otherwise just quote the variable
- *)
- saved="$saved '$1'"
- ;;
- esac
-}
+source $(dirname $0)/wrapper.sh
saved=""
while getopts fpaRHLP opt; do
@@ -58,5 +26,4 @@ for arg; do
save "$arg"
done
-eval set -- "$saved"
-exec `realbin` "$@"
+exec_real
diff --git a/bin/sed b/bin/sed
index 520c5bde33..2200bd15e1 100755
--- a/bin/sed
+++ b/bin/sed
@@ -21,40 +21,7 @@
# to reimplement -i internally in this script on some platforms.
-realbin() {
- _script=`basename $0`
- found=
- for bin in `which -a $_script`; do
- if ! cmp -s $bin $0; then
- found=$bin
- break
- fi
- done
- if [ -n "$found" ]; then
- echo "$found"
- else
- return 1
- fi
-}
-
-quote(){
- /usr/bin/sed -e "s,','\\\\'',g; 1s,^,',; \$s,\$,',;" << EOF
-$1
-EOF
-}
-
-save () {
- case "$1" in
- # when a string contains a "'" we have to escape it
- *\'*)
- saved="$saved `quote "$1"`"
- ;;
- # otherwise just quote the variable
- *)
- saved="$saved '$1'"
- ;;
- esac
-}
+source $(dirname $0)/wrapper.sh
case `uname -s` in
Darwin)
@@ -80,15 +47,14 @@ while getopts ne:f:$getopt_os opt; do
save "$OPTARG"
;;
i)
- saved="$saved $inplace_arg"
+ save "$inplace_arg"
continue
;;
r)
- saved="$saved $extended_re_arg"
+ save "$extended_re_arg"
continue
;;
\?)
- echo >&2 "Unsupported argument: $OPTARG"
exit 1
;;
esac
@@ -98,5 +64,4 @@ for arg; do
save "$arg"
done
-eval set -- "$saved"
-exec `realbin` "$@"
+exec_real
diff --git a/bin/wrapper.sh b/bin/wrapper.sh
new file mode 100644
index 0000000000..3a93475b7f
--- /dev/null
+++ b/bin/wrapper.sh
@@ -0,0 +1,29 @@
+path_remove () {
+ echo $PATH | tr ':' '\n' | grep -v "^$1\$" | tr '\n' ':'
+}
+
+quote(){
+ sed -e "s,','\\\\'',g; 1s,^,',; \$s,\$,',;" << EOF
+$1
+EOF
+}
+
+save () {
+ case "$1" in
+ # when a string contains a "'" we have to escape it
+ *\'*)
+ saved="$saved $(quote "$1")"
+ ;;
+ # otherwise just quote the variable
+ *)
+ saved="$saved '$1'"
+ ;;
+ esac
+}
+
+exec_real () {
+ eval set -- "$saved"
+ scriptdir="$(dirname $0)"
+ PATH="$(path_remove $scriptdir)"
+ exec "$(basename $0)" "$@"
+}