From c610d7b8e03df50ab0e3eb8662194b20511103b6 Mon Sep 17 00:00:00 2001 From: "Gary V. Vaughan" Date: Fri, 8 Oct 2004 15:50:56 +0000 Subject: [PATCH] Fix some issues that mangled the reexecution path to a script, and thus prevented it from finding itself: * lib/general.m4sh (progname): Don't actually change the name of the script if it begins with a `-', just prepend `./'. (progpath): Add a new clause that first searches the execution PATH, and then finally assumes this script is in the current working directory if $progname has no directory separators (e.g when invoked as `$SHELL progname'). --- ChangeLog | 12 ++++++++++++ config/general.m4sh | 18 +++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c53358dd2..e5ab34e8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2004-10-08 Gary V. Vaughan + + Fix some issues that mangled the reexecution path to a script, + and thus prevented it from finding itself: + + * config/general.m4sh (progname): Don't actually change the name + of the script if it begins with a `-', just prepend `./'. + (progpath): Add a new clause that first searches the execution + PATH, and then finally assumes this script is in the current + working directory if $progname has no directory separators (e.g + when invoked as `$SHELL progname'). + 2004-10-08 Ralf Wildenhues * libltdl/ltdl.c (lt_dlexit, lt_dlpath_insertdir): Fix memleaks, diff --git a/config/general.m4sh b/config/general.m4sh index d5eab8587..6ddc1655e 100644 --- a/config/general.m4sh +++ b/config/general.m4sh @@ -62,16 +62,28 @@ progpath="$0" # The name of this program: # In the unlikely event $progname began with a '-', it would play havoc with -# func_echo (imagine progname=-n), so we substitute for _ in that case. -progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,_,'` +# func_echo (imagine progname=-n), so we prepend ./ in that case: +progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'` # Make sure we have an absolute path for reexecution: case $progpath in [[\\/]]*|[[A-Za-z]]:\\*) ;; - *) progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"` + *[[\\/]]*) + progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"` progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; esac # Sed substitution that helps us do robust quoting. It backslashifies -- 2.47.2