--- lisp/mail/mh-funcs.el.orig Wed Feb 25 06:35:14 1998 +++ lisp/mail/mh-funcs.el Wed Feb 25 15:10:45 1998 @@ -211,7 +211,7 @@ (let ((print-command (if (numberp msg-or-seq) (format "%s -nobell -clear %s %s | %s" - (expand-file-name "mhl" mh-lib) + (expand-file-name "mhl" mh-lib-progs) (mh-msg-filename msg-or-seq) (if (stringp mhl-formfile) (format "-form %s" mhl-formfile) @@ -223,7 +223,7 @@ (format "Sequence from %s" mh-current-folder)))) (format "(scan -clear %s ; %s -nobell -clear %s %s) | %s" (mapconcat (function (lambda (msg) msg)) msg-or-seq " ") - (expand-file-name "mhl" mh-lib) + (expand-file-name "mhl" mh-lib-progs) (if (stringp mhl-formfile) (format "-form %s" mhl-formfile) "") --- lisp/mail/mh-utils.el.orig Wed Feb 25 06:35:14 1998 +++ lisp/mail/mh-utils.el Wed Feb 25 15:12:20 1998 @@ -38,12 +38,18 @@ (defvar mh-lib nil "Directory containing the MH library. This directory contains, among other things, -the mhl program and the components file.") +the components file.") + +(defvar mh-lib-progs nil + "Directory containing the supporting MH commands, +such as install-mh and mhl.") ;;;###autoload (put 'mh-progs 'risky-local-variable t) ;;;###autoload (put 'mh-lib 'risky-local-variable t) +;;;###autoload +(put 'mh-lib-progs 'risky-local-variable t) ;;; User preferences: @@ -532,7 +538,7 @@ (defvar mail-user-agent 'mh-e-user-agent) ;from reporter.el 3.2 (defun mh-find-path () - ;; Set mh-progs and mh-lib. + ;; Set mh-progs, mh-lib, and mh-lib-progs. ;; (This step is necessary if MH was installed after this Emacs was dumped.) ;; From profile file, set mh-user-path, mh-draft-folder, ;; mh-unseen-seq, mh-previous-seq, mh-inbox. @@ -586,8 +592,9 @@ (and (file-regular-p file) (file-executable-p file))) (defun mh-find-progs () - "Find the `inc' and `mhl' programs of MH. -Set the `mh-progs' and `mh-lib' variables to the file names." + "Find the `inc' and `mhl' programs of MH, and the components file. +Set the `mh-progs', `mh-lib', and `mh-lib-progs' variables to the +directory names." (or (and mh-progs (mh-file-command-p (expand-file-name "inc" mh-progs))) (setq mh-progs (or (mh-path-search exec-path "inc") @@ -599,7 +606,7 @@ "/usr/local/bin/" ) "inc")))) - (or (and mh-lib (mh-file-command-p (expand-file-name "mhl" mh-lib))) + (or (and mh-lib (file-exists-p (expand-file-name "components" mh-lib))) (setq mh-lib ;; Look for a lib directory roughly parallel to the bin ;; directory: Strip any trailing `mh' or `bin' path @@ -614,18 +621,24 @@ (mh-path-search (list (expand-file-name "lib/mh/" mh-base) (expand-file-name "mh/lib/" mh-base)) - "mhl")) + "components" + 'file-exists-p)) + ))) + (or (and mh-lib-progs + (mh-file-command-p (expand-file-name "mhl" mh-lib-progs))) + (setq mh-lib-progs + (or (mh-path-search mh-lib "mhl") (mh-path-search '("/usr/local/bin/mh/") "mhl") (mh-path-search exec-path "mhl") ;unlikely ))) - (unless (and mh-progs mh-lib) - (error "Cannot find the commands `inc' and `mhl'"))) + (unless (and mh-progs mh-lib mh-lib-progs) + (error "Cannot find the commands `inc' and `mhl' and the file `components'"))) -(defun mh-path-search (path file) +(defun mh-path-search (path file &optional (func-p 'mh-file-command-p)) ;; Search PATH, a list of directory names, for FILE. ;; Returns the element of PATH that contains FILE, or nil if not found. (while (and path - (not (mh-file-command-p (expand-file-name file (car path))))) + (not (funcall func-p (expand-file-name file (car path))))) (setq path (cdr path))) (car path)) @@ -644,7 +657,7 @@ ;; mh-exec-cmd will display to the user. ;; The MH 5 version of install-mh might try prompt the user ;; for information, which would fail here. - (mh-exec-cmd (expand-file-name "install-mh" mh-lib) "-auto") + (mh-exec-cmd (expand-file-name "install-mh" mh-lib-progs) "-auto") ;; now try again to read the profile file (erase-buffer) (condition-case err @@ -916,7 +929,8 @@ (defun mh-exec-lib-cmd-output (command &rest args) ;; Execute MH library command COMMAND with ARGS. ;; Put the output into buffer after point. Set mark after inserted text. - (apply 'mh-exec-cmd-output (expand-file-name command mh-lib) nil args)) + (apply 'mh-exec-cmd-output + (expand-file-name command mh-lib-progs) nil args)) (defun mh-handle-process-error (command status)