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').
This commit is contained in:
Gary V. Vaughan 2004-10-08 17:01:49 +00:00
parent d7c85ee5b0
commit 20c92bbee3
2 changed files with 27 additions and 3 deletions

View File

@ -1,3 +1,15 @@
2004-10-08 Gary V. Vaughan <gary@gnu.org>
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 Gary V. Vaughan <gary@gnu.org>
* config/general.m4sh (func_verbose): Work around a bash bug in

View File

@ -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