(let ((directory (file-name-as-directory
(expand-file-name
(car directories)))))
- (if (file-directory-p directory)
+ (if (paths-file-readable-directory-p directory)
(let ((raw-entries
(if (equal 0 max-depth)
'()
- (directory-files directory nil "^[^.-]")))
+ (directory-files directory nil "^[^.-]")))
(reverse-dirs '()))
-
(while raw-entries
(if (null (string-match exclude-regexp (car raw-entries)))
(setq reverse-dirs
(setq directories (cdr directories)))
path))
+(defun paths-file-readable-directory-p (filename)
+ "Check if filename is a readable directory."
+ (and (file-directory-p filename)
+ (file-readable-p filename)))
+
(defun paths-find-recursive-load-path (directories &optional max-depth)
"Construct a recursive load path underneath DIRECTORIES."
(paths-find-recursive-path directories
"Check if DIRECTORY is a plausible installation root for XEmacs."
(or
;; installed
- (file-directory-p (paths-construct-path (list directory
- "lib"
- emacs-program-name)))
+ (paths-file-readable-directory-p (paths-construct-path (list directory
+ "lib"
+ emacs-program-name)))
;; in-place or windows-nt
- (and
- (file-directory-p (paths-construct-path (list directory "lisp")))
- (file-directory-p (paths-construct-path (list directory "etc"))))))
+ (and
+ (paths-file-readable-directory-p (paths-construct-path (list directory "lisp")))
+ (paths-file-readable-directory-p (paths-construct-path (list directory "etc"))))))
(defun paths-chase-symlink (file-name)
"Chase a symlink until the bitter end."
(defun paths-construct-emacs-directory (root suffix base)
"Construct a directory name within the XEmacs hierarchy."
(file-name-as-directory
- (expand-file-name
+ (expand-file-name
(concat
(file-name-as-directory root)
suffix
(let ((preferred-value (or (and envvar (getenv envvar))
default)))
(if (and preferred-value
- (file-directory-p preferred-value))
+ (paths-file-readable-directory-p preferred-value))
(file-name-as-directory preferred-value)
(catch 'gotcha
(while roots
(let* ((root (car roots))
;; installed
(path (paths-construct-emacs-directory root suffix base)))
- (if (file-directory-p path)
+ (if (paths-file-readable-directory-p path)
(throw 'gotcha path)
;; in-place
(if (null keep-suffix)
(let ((path (paths-construct-emacs-directory root "" base)))
- (if (file-directory-p path)
+ (if (paths-file-readable-directory-p path)
(throw 'gotcha path))))))
(setq roots (cdr roots)))
nil))))
;; from more to less specific
(paths-find-version-directory roots
(concat base system-configuration)
- envvar)
+ envvar default)
(paths-find-version-directory roots
base
envvar)
(paths-find-version-directory roots
system-configuration
- envvar default)))
+ envvar)))
(defun construct-emacs-version-name ()
"Construct the raw XEmacs version number."
"Return the directories among DIRECTORIES."
(let ((reverse-directories '()))
(while directories
- (if (file-directory-p (car directories))
- (setq reverse-directories
+ (if (paths-file-readable-directory-p (car directories))
+ (setq reverse-directories
(cons (car directories)
reverse-directories)))
(setq directories (cdr directories)))