From: Christophe Rhodes Date: Mon, 1 Sep 2003 10:41:24 +0000 (+0000) Subject: 0.8.3.18: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=2b596efa9a6b08a22bbdcdf88198c5d2af1d0335;p=sbcl.git 0.8.3.18: Allow RUN-PROGRAM to work even when something in $PATH is not an existent directory: ... patch from Andreas Fuchs sbcl-devel 2003-08-26; ... add a test case; Also, need find-gnumake.sh in binary distributions: ... make it so! --- diff --git a/NEWS b/NEWS index 17f7410..45ccbdf 100644 --- a/NEWS +++ b/NEWS @@ -2011,6 +2011,8 @@ changes in sbcl-0.8.4 relative to sbcl-0.8.3: * bug fix: effective methods associated with a generic function are no longer cached over a change of that generic function's method combination. (reported by Andreas Fuchs) + * bug fix: RUN-PROGRAM now does not fail if some element in $PATH + names a non-existent directory. (thanks to Andreas Fuchs) * optimization: restored some effective method precomputation in CLOS (turned off by an ANSI fix in sbcl-0.8.3); the amount of precomputation is now tunable. diff --git a/binary-distribution.sh b/binary-distribution.sh index 462a86d..c5b0e77 100755 --- a/binary-distribution.sh +++ b/binary-distribution.sh @@ -13,7 +13,7 @@ b=${1:?"missing base directory name argument"} tar -cf $b-binary.tar \ $b/output/sbcl.core $b/src/runtime/sbcl \ $b/BUGS $b/COPYING $b/CREDITS $b/INSTALL $b/NEWS $b/README \ - $b/install.sh \ + $b/install.sh $b/find-gnumake.sh \ $b/doc/sbcl.1 \ $b/pubring.pgp \ $b/contrib/asdf-module.mk \ diff --git a/src/code/run-program.lisp b/src/code/run-program.lisp index 5ad4e12..0119d6c 100644 --- a/src/code/run-program.lisp +++ b/src/code/run-program.lisp @@ -394,11 +394,11 @@ while start ;; the truename of a file naming a directory is the ;; directory, at least until pfdietz comes along and says why - ;; that's noncompliant - for fullpath = (merge-pathnames - pathname (truename - (subseq search-path start end))) - when (unix-filename-is-executable-p (namestring fullpath)) + ;; that's noncompliant -- CSR, c. 2003-08-10 + for truename = (probe-file (subseq search-path start end)) + for fullpath = (when truename (merge-pathnames pathname truename)) + when (and fullpath + (unix-filename-is-executable-p (namestring fullpath))) return fullpath)) ;;; FIXME: There shouldn't be two semiredundant versions of the diff --git a/tests/run-program.test.sh b/tests/run-program.test.sh index ad11cac..94dcbad 100644 --- a/tests/run-program.test.sh +++ b/tests/run-program.test.sh @@ -17,7 +17,7 @@ # one of the tests below). SOMETHING_IN_THE_ENVIRONMENT='yes there is' export SOMETHING_IN_THE_ENVIRONMENT - +export PATH=/some/path/that/does/not/exist:${PATH} ${SBCL:-sbcl} <