+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 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* libltdl/ltdl.c (lt_dlexit, lt_dlpath_insertdir): Fix memleaks,
# 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