;;; Is UNIX-FILENAME the name of a file that we can execute?
(defun unix-filename-is-executable-p (unix-filename)
(declare (type simple-string unix-filename))
+ (setf unix-filename (coerce unix-filename 'base-string))
(values (and (eq (sb-unix:unix-file-kind unix-filename) :file)
(sb-unix:unix-access unix-filename sb-unix:x_ok))))
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))
+ ;; 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