From: Andreas F. <as...@vo...> - 2003-08-26 14:37:43
|
hi, run-program searches through $PATH without caring whether the directories in $PATH actually exist. This patch fixes the problem (I hope) and gets rid of most of the compiler notes: Index: run-program.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/run-program.lisp,v retrieving revision 1.33 diff -u -r1.33 run-program.lisp --- run-program.lisp 16 Jul 2003 08:26:01 -0000 1.33 +++ run-program.lisp 26 Aug 2003 14:30:49 -0000 @@ -390,16 +390,17 @@ &optional (search-path (posix-getenv "PATH"))) "Find the first executable file matching PATHNAME in any of the colon-separated list of pathnames SEARCH-PATH" + (declare (string search-path)) (loop for end = (position #\: search-path :start (if end (1+ end) 0)) and start = 0 then (and end (1+ end)) while start ;; <Krystof> 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)) + 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 -- Andreas Fuchs, <as...@ac...>, as...@ja..., antifuchs |