changeset 68127:40429cab94e1

* mh-index.el (mh-index-search): Checking mh-find-path-run is unnecessary. * mh-init.el (mh-sys-path): Co-locate with mh-variants, which uses it. (mh-variants): Note variable isn't meant to be accessed directly; use function mh-variants instead. (mh-variant-info, mh-variant-mh-info, mh-variant-mu-mh-info) (mh-variant-nmh-info): Co-locate next to mh-variants, which uses them. Updated to use mh-file-command-p which is more accurrate than file-executable-p which returns t for directories. (mh-file-command-p): Move here from mh-utils, since mh-variant-*-info are the only functions to use it. (mh-variant-set, mh-variant-set-variant, mh-variant-p): Use function mh-variants instead of variable. More robust. (mh-find-path-run): Move here from mh-utils.el. Mention that checking this variable is unnecessary. (mh-find-path): Move here from mh-utils.el. With the advent of MH variants and an mhparam command that doesn't work if there isn't an MH profile, we can't get libdir for running install-mh. So don't bother. If there's an issue with the environment, direct the user to install MH and run install-mh (closes SF #835192). Don't read ~/.mh_profile directly. Use mh-profile-component which uses mhparam (closes SF #1016027). * mh-utils.el (mh-get-profile-field): Rename to mh-profile-component-value. Add colon to search removing unnecessary addition of colon to field in mh-profile-component. (mh-profile-component): Modify call to mh-profile-component-value accordingly. Move next to mh-profile-component-value. (mh-find-path-run, mh-find-path, mh-file-command-p): Move to mh-init.el. It makes sense that code that is only run once per session (more or less) is in mh-init.el rather than cluttering mh-utils.el. (mh-no-install, mh-install): Delete.
author Bill Wohler <wohler@newt.com>
date Tue, 10 Jan 2006 23:55:42 +0000
parents e886a1139db0
children b1c80dc9a67d
files lisp/mh-e/ChangeLog lisp/mh-e/mh-index.el lisp/mh-e/mh-init.el lisp/mh-e/mh-utils.el
diffstat 4 files changed, 239 insertions(+), 216 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mh-e/ChangeLog	Tue Jan 10 23:52:34 2006 +0000
+++ b/lisp/mh-e/ChangeLog	Tue Jan 10 23:55:42 2006 +0000
@@ -1,3 +1,44 @@
+2006-01-10  Bill Wohler  <wohler@newt.com>
+
+	* mh-index.el (mh-index-search): Checking mh-find-path-run is
+	unnecessary.
+
+	* mh-init.el (mh-sys-path): Co-locate with mh-variants, which uses
+	it.
+	(mh-variants): Note variable isn't meant to be accessed directly;
+	use function mh-variants instead.
+	(mh-variant-info, mh-variant-mh-info, mh-variant-mu-mh-info)
+	(mh-variant-nmh-info): Co-locate next to mh-variants, which uses
+	them. Updated to use mh-file-command-p which is more accurrate
+	than file-executable-p which returns t for directories.
+	(mh-file-command-p): Move here from mh-utils, since
+	mh-variant-*-info are the only functions to use it.
+	(mh-variant-set, mh-variant-set-variant, mh-variant-p): Use
+	function mh-variants instead of variable. More robust.
+	(mh-find-path-run): Move here from mh-utils.el. Mention that
+	checking this variable is unnecessary.
+	(mh-find-path): Move here from mh-utils.el. With the advent of MH
+	variants and an mhparam command that doesn't work if there isn't
+	an MH profile, we can't get libdir for running install-mh. So
+	don't bother. If there's an issue with the environment, direct the
+	user to install MH and run install-mh (closes SF #835192). Don't
+	read ~/.mh_profile directly. Use mh-profile-component which uses
+	mhparam (closes SF #1016027).
+
+	* mh-utils.el (mh-get-profile-field): Rename to
+	mh-profile-component-value. Add colon to search removing
+	unnecessary addition of colon to field in mh-profile-component.
+	(mh-profile-component): Modify call to mh-profile-component-value
+	accordingly. Move next to mh-profile-component-value.
+	(mh-find-path-run, mh-find-path, mh-file-command-p): Move to
+	mh-init.el. It makes sense that code that is only run once per
+	session (more or less) is in mh-init.el rather than cluttering
+	mh-utils.el.
+	(mh-no-install, mh-install): Delete.
+
+	* mh-customize.el (mh-folder-msg-number): 
+	* mh-mime.el (mh-file-mime-type): Removed trailing whitespace.
+
 2006-01-09  Bill Wohler  <wohler@newt.com>
 
 	* mh-init.el (mh-variant-mu-mh-info, mh-variant-nmh-info): Applied
--- a/lisp/mh-e/mh-index.el	Tue Jan 10 23:52:34 2006 +0000
+++ b/lisp/mh-e/mh-index.el	Tue Jan 10 23:55:42 2006 +0000
@@ -443,7 +443,7 @@
   (interactive
    (list current-prefix-arg
          (progn
-           (unless mh-find-path-run (mh-find-path))
+           (mh-find-path)
            (or (and current-prefix-arg mh-index-sequence-search-flag)
                (and current-prefix-arg (car mh-index-previous-search))
                (mh-prompt-for-folder "Search" "+" nil "all" t)))
--- a/lisp/mh-e/mh-init.el	Tue Jan 10 23:52:34 2006 +0000
+++ b/lisp/mh-e/mh-init.el	Tue Jan 10 23:55:42 2006 +0000
@@ -29,7 +29,7 @@
 ;; Sets up the MH variant (currently nmh, MH, or GNU mailutils).
 ;;
 ;; Users may customize `mh-variant' to switch between available variants.
-;; Available MH variants are described in the variable `mh-variants'.
+;; Available MH variants are returned by the function `mh-variants'.
 ;; Developers may check which variant is currently in use with the
 ;; variable `mh-variant-in-use' or the function `mh-variant-p'.
 ;;
@@ -43,6 +43,22 @@
 (mh-require-cl)
 (require 'mh-utils)
 
+(defvar mh-sys-path
+  '("/usr/local/nmh/bin"                ; nmh default
+    "/usr/local/bin/mh/"
+    "/usr/local/mh/"
+    "/usr/bin/mh/"                      ; Ultrix 4.2, Linux
+    "/usr/new/mh/"                      ; Ultrix < 4.2
+    "/usr/contrib/mh/bin/"              ; BSDI
+    "/usr/pkg/bin/"                     ; NetBSD
+    "/usr/local/bin/"
+    "/usr/local/bin/mu-mh/"             ; GNU mailutils - default
+    "/usr/bin/mu-mh/")                  ; GNU mailutils - packaged
+  "List of directories to search for variants of the MH variant.
+The list `exec-path' is searched in addition to this list.
+There's no need for users to modify this list. Instead add extra
+directories to the customizable variable `mh-path'.")
+
 ;; Set for local environment:
 ;; mh-progs and mh-lib used to be set in paths.el, which tried to
 ;; figure out at build time which of several possible directories MH
@@ -72,7 +88,8 @@
 
 (defvar mh-variants nil
   "List describing known MH variants.
-Created by the function `mh-variants'")
+Do not access this variable directly as it may not have yet been initialized.
+Use the function `mh-variants' instead.")
 
 ;;;###mh-autoload
 (defun mh-variants ()
@@ -95,106 +112,15 @@
                     (add-to-list 'mh-variants variant)))))
       mh-variants)))
 
-(defvar mh-variant-in-use nil
-  "The MH variant currently in use; a string with variant and version number.
-This differs from `mh-variant' when the latter is set to
-\"autodetect\".")
-
-;;;###mh-autoload
-(defun mh-variant-set (variant)
-  "Set the MH variant to VARIANT.
-Sets `mh-progs', `mh-lib', `mh-lib-progs' and
-`mh-flists-present-flag'.
-If the VARIANT is \"autodetect\", then first try nmh, then MH and
-finally GNU mailutils."
-  (interactive
-   (list (completing-read
-          "MH Variant: "
-          (mapcar (lambda (x) (list (car x))) (mh-variants))
-          nil t)))
-  (let ((valid-list (mapcar (lambda (x) (car x)) (mh-variants))))
-    (cond
-     ((eq variant 'none))
-     ((eq variant 'autodetect)
+(defun mh-variant-info (dir)
+  "Return MH variant found in DIR, or nil if none present."
+  (save-excursion
+    (let ((tmp-buffer (get-buffer-create mh-temp-buffer)))
+      (set-buffer tmp-buffer)
       (cond
-       ((mh-variant-set-variant 'nmh)
-        (message "%s installed as MH variant" mh-variant-in-use))
-       ((mh-variant-set-variant 'mh)
-        (message "%s installed as MH variant" mh-variant-in-use))
-       ((mh-variant-set-variant 'mu-mh)
-        (message "%s installed as MH variant" mh-variant-in-use))
-       (t
-        (message "No MH variant found on the system"))))
-     ((member variant valid-list)
-      (when (not (mh-variant-set-variant variant))
-        (message "Warning: %s variant not found. Autodetecting..." variant)
-        (mh-variant-set 'autodetect)))
-     (t
-      (message "Unknown variant; use %s"
-               (mapconcat '(lambda (x) (format "%s" (car x)))
-                          mh-variants " or "))))))
-
-(defun mh-variant-set-variant (variant)
-  "Setup the system variables for the MH variant named VARIANT.
-If VARIANT is a string, use that key in the variable `mh-variants'.
-If VARIANT is a symbol, select the first entry that matches that
-variant."
-  (cond
-   ((stringp variant)                   ;e.g. "nmh 1.1-RC1"
-    (when (assoc variant mh-variants)
-      (let* ((alist (cdr (assoc variant mh-variants)))
-             (lib-progs (cadr (assoc 'mh-lib-progs alist)))
-             (lib       (cadr (assoc 'mh-lib       alist)))
-             (progs     (cadr (assoc 'mh-progs     alist)))
-             (flists    (cadr (assoc 'flists       alist))))
-        ;;(set-default mh-variant variant)
-        (setq mh-x-mailer-string     nil
-              mh-flists-present-flag flists
-              mh-lib-progs           lib-progs
-              mh-lib                 lib
-              mh-progs               progs
-              mh-variant-in-use      variant))))
-   ((symbolp variant)                   ;e.g. 'nmh (pick the first match)
-    (loop for variant-list in mh-variants
-          when (eq variant (cadr (assoc 'variant (cdr variant-list))))
-          return (let* ((version   (car variant-list))
-                        (alist (cdr variant-list))
-                        (lib-progs (cadr (assoc 'mh-lib-progs alist)))
-                        (lib       (cadr (assoc 'mh-lib       alist)))
-                        (progs     (cadr (assoc 'mh-progs     alist)))
-                        (flists    (cadr (assoc 'flists       alist))))
-                   ;;(set-default mh-variant flavor)
-                   (setq mh-x-mailer-string     nil
-                         mh-flists-present-flag flists
-                         mh-lib-progs           lib-progs
-                         mh-lib                 lib
-                         mh-progs               progs
-                         mh-variant-in-use      version)
-                   t)))))
-
-;;;###mh-autoload
-(defun mh-variant-p (&rest variants)
-  "Return t if variant is any of VARIANTS.
-Currently known variants are 'MH, 'nmh, and 'mu-mh."
-  (let ((variant-in-use
-         (cadr (assoc 'variant (assoc mh-variant-in-use mh-variants)))))
-    (not (null (member variant-in-use variants)))))
-
-(defvar mh-sys-path
-  '("/usr/local/nmh/bin"                ; nmh default
-    "/usr/local/bin/mh/"
-    "/usr/local/mh/"
-    "/usr/bin/mh/"                      ; Ultrix 4.2, Linux
-    "/usr/new/mh/"                      ; Ultrix < 4.2
-    "/usr/contrib/mh/bin/"              ; BSDI
-    "/usr/pkg/bin/"                     ; NetBSD
-    "/usr/local/bin/"
-    "/usr/local/bin/mu-mh/"             ; GNU mailutils - default
-    "/usr/bin/mu-mh/")                  ; GNU mailutils - packaged
-  "List of directories to search for variants of the MH variant.
-The list `exec-path' is searched in addition to this list.
-There's no need for users to modify this list. Instead add extra
-directories to the customizable variable `mh-path'.")
+       ((mh-variant-mh-info dir))
+       ((mh-variant-nmh-info dir))
+       ((mh-variant-mu-mh-info dir))))))
 
 (defun mh-variant-mh-info (dir)
   "Return info for MH variant in DIR assuming a temporary buffer is setup."
@@ -209,7 +135,7 @@
   ;;          [SPRINTFTYPE=int] [SVR4] [SYS5] [SYS5DIR] [TERMINFO]
   ;;          [TYPESIG=void] [UNISTD] [UTK] [VSPRINTF]
   (let ((mhparam (expand-file-name "mhparam" dir)))
-    (when (and (file-exists-p mhparam) (file-executable-p mhparam))
+    (when (mh-file-command-p mhparam)
       (erase-buffer)
       (call-process mhparam nil '(t nil) nil "-help")
       (goto-char (point-min))
@@ -233,7 +159,7 @@
   ;; 'mhparam -version' output:
   ;; mhparam (GNU mailutils 0.3.2)
   (let ((mhparam (expand-file-name "mhparam" dir)))
-    (when (and (file-exists-p mhparam) (file-executable-p mhparam))
+    (when (mh-file-command-p mhparam)
       (erase-buffer)
       (call-process mhparam nil '(t nil) nil "-version")
       (goto-char (point-min))
@@ -254,7 +180,7 @@
   ;; `mhparam -version' outputs:
   ;; mhparam -- nmh-1.1-RC1 [compiled on chaak at Fri Jun 20 11:03:28 PDT 2003]
   (let ((mhparam (expand-file-name "mhparam" dir)))
-    (when (and (file-exists-p mhparam) (file-executable-p mhparam))
+    (when (mh-file-command-p mhparam)
       (erase-buffer)
       (call-process mhparam nil '(t nil) nil "-version")
       (goto-char (point-min))
@@ -269,15 +195,164 @@
             (flists         ,(file-exists-p
                               (expand-file-name "flists" dir)))))))))
 
-(defun mh-variant-info (dir)
-  "Return MH variant found in DIR, or nil if none present."
-  (save-excursion
-    (let ((tmp-buffer (get-buffer-create mh-temp-buffer)))
-      (set-buffer tmp-buffer)
+(defun mh-file-command-p (file)
+  "Return t if file FILE is the name of a executable regular file."
+  (and (file-regular-p file) (file-executable-p file)))
+
+(defvar mh-variant-in-use nil
+  "The MH variant currently in use; a string with variant and version number.
+This differs from `mh-variant' when the latter is set to
+\"autodetect\".")
+
+;;;###mh-autoload
+(defun mh-variant-set (variant)
+  "Set the MH variant to VARIANT.
+Sets `mh-progs', `mh-lib', `mh-lib-progs' and
+`mh-flists-present-flag'.
+If the VARIANT is \"autodetect\", then first try nmh, then MH and
+finally GNU mailutils."
+  (interactive
+   (list (completing-read
+          "MH variant: "
+          (mapcar (lambda (x) (list (car x))) (mh-variants))
+          nil t)))
+  (let ((valid-list (mapcar (lambda (x) (car x)) (mh-variants))))
+    (cond
+     ((eq variant 'none))
+     ((eq variant 'autodetect)
       (cond
-       ((mh-variant-mh-info dir))
-       ((mh-variant-nmh-info dir))
-       ((mh-variant-mu-mh-info dir))))))
+       ((mh-variant-set-variant 'nmh)
+        (message "%s installed as MH variant" mh-variant-in-use))
+       ((mh-variant-set-variant 'mh)
+        (message "%s installed as MH variant" mh-variant-in-use))
+       ((mh-variant-set-variant 'mu-mh)
+        (message "%s installed as MH variant" mh-variant-in-use))
+       (t
+        (message "No MH variant found on the system"))))
+     ((member variant valid-list)
+      (when (not (mh-variant-set-variant variant))
+        (message "Warning: %s variant not found. Autodetecting..." variant)
+        (mh-variant-set 'autodetect)))
+     (t
+      (message "Unknown variant; use %s"
+               (mapconcat '(lambda (x) (format "%s" (car x)))
+                          (mh-variants) " or "))))))
+
+(defun mh-variant-set-variant (variant)
+  "Setup the system variables for the MH variant named VARIANT.
+If VARIANT is a string, use that key in the alist returned by the
+function `mh-variants'.
+If VARIANT is a symbol, select the first entry that matches that
+variant."
+  (cond
+   ((stringp variant)                   ;e.g. "nmh 1.1-RC1"
+    (when (assoc variant (mh-variants))
+      (let* ((alist (cdr (assoc variant (mh-variants))))
+             (lib-progs (cadr (assoc 'mh-lib-progs alist)))
+             (lib       (cadr (assoc 'mh-lib       alist)))
+             (progs     (cadr (assoc 'mh-progs     alist)))
+             (flists    (cadr (assoc 'flists       alist))))
+        ;;(set-default mh-variant variant)
+        (setq mh-x-mailer-string     nil
+              mh-flists-present-flag flists
+              mh-lib-progs           lib-progs
+              mh-lib                 lib
+              mh-progs               progs
+              mh-variant-in-use      variant))))
+   ((symbolp variant)                   ;e.g. 'nmh (pick the first match)
+    (loop for variant-list in (mh-variants)
+          when (eq variant (cadr (assoc 'variant (cdr variant-list))))
+          return (let* ((version   (car variant-list))
+                        (alist (cdr variant-list))
+                        (lib-progs (cadr (assoc 'mh-lib-progs alist)))
+                        (lib       (cadr (assoc 'mh-lib       alist)))
+                        (progs     (cadr (assoc 'mh-progs     alist)))
+                        (flists    (cadr (assoc 'flists       alist))))
+                   ;;(set-default mh-variant flavor)
+                   (setq mh-x-mailer-string     nil
+                         mh-flists-present-flag flists
+                         mh-lib-progs           lib-progs
+                         mh-lib                 lib
+                         mh-progs               progs
+                         mh-variant-in-use      version)
+                   t)))))
+
+;;;###mh-autoload
+(defun mh-variant-p (&rest variants)
+  "Return t if variant is any of VARIANTS.
+Currently known variants are 'MH, 'nmh, and 'mu-mh."
+  (let ((variant-in-use
+         (cadr (assoc 'variant (assoc mh-variant-in-use (mh-variants))))))
+    (not (null (member variant-in-use variants)))))
+
+
+
+;;; Read MH Profile
+
+(defvar mh-find-path-run nil
+  "Non-nil if `mh-find-path' has been run already.
+Do not access this variable; `mh-find-path' already uses it to
+avoid running more than once.")
+
+(defun mh-find-path ()
+  "Set variables from user's MH profile.
+
+This function sets `mh-user-path' from your \"Path:\" MH profile
+component (but defaults to \"Mail\" if one isn't present),
+`mh-draft-folder' from \"Draft-Folder:\", `mh-unseen-seq' from
+\"Unseen-Sequence:\", `mh-previous-seq' from
+\"Previous-Sequence:\", and `mh-inbox' from \"Inbox:\" (defaults
+to \"+inbox\").
+
+The hook `mh-find-path-hook' is run after these variables have
+been set. This hook can be used the change the value of these
+variables if you need to run with different values between MH and
+MH-E."
+  (unless mh-find-path-run
+    ;; Sanity checks.
+    (if (and (getenv "MH")
+             (not (file-readable-p (getenv "MH"))))
+        (error "MH environment variable contains unreadable file %s"
+               (getenv "MH")))
+    (if (null (mh-variants))
+        (error "Install MH and run install-mh before running MH-E"))
+    (let ((profile "~/.mh_profile"))
+      (if (not (file-readable-p profile))
+          (error "Run install-mh before running MH-E")))
+    ;; Read MH profile.
+    (setq mh-user-path (mh-profile-component "Path"))
+    (if (not mh-user-path)
+        (setq mh-user-path "Mail"))
+    (setq mh-user-path
+          (file-name-as-directory
+           (expand-file-name mh-user-path (expand-file-name "~"))))
+    (unless mh-x-image-cache-directory
+      (setq mh-x-image-cache-directory
+            (expand-file-name ".mhe-x-image-cache" mh-user-path)))
+    (setq mh-draft-folder (mh-profile-component "Draft-Folder"))
+    (if mh-draft-folder
+        (progn
+          (if (not (mh-folder-name-p mh-draft-folder))
+              (setq mh-draft-folder (format "+%s" mh-draft-folder)))
+          (if (not (file-exists-p (mh-expand-file-name mh-draft-folder)))
+              (error
+               "Draft folder \"%s\" not found; create it and try again"
+               (mh-expand-file-name mh-draft-folder)))))
+    (setq mh-inbox (mh-profile-component "Inbox"))
+    (cond ((not mh-inbox)
+           (setq mh-inbox "+inbox"))
+          ((not (mh-folder-name-p mh-inbox))
+           (setq mh-inbox (format "+%s" mh-inbox))))
+    (setq mh-unseen-seq (mh-profile-component "Unseen-Sequence"))
+    (if mh-unseen-seq
+        (setq mh-unseen-seq (intern mh-unseen-seq))
+      (setq mh-unseen-seq 'unseen))     ;old MH default?
+    (setq mh-previous-seq (mh-profile-component "Previous-Sequence"))
+    (if mh-previous-seq
+        (setq mh-previous-seq (intern mh-previous-seq)))
+    (run-hooks 'mh-find-path-hook)
+    (mh-collect-folder-names)
+    (setq mh-find-path-run t)))
 
 
 
--- a/lisp/mh-e/mh-utils.el	Tue Jan 10 23:52:34 2006 +0000
+++ b/lisp/mh-e/mh-utils.el	Tue Jan 10 23:55:42 2006 +0000
@@ -1950,12 +1950,18 @@
     (or dont-show (not return-value) (mh-maybe-show number))
     return-value))
 
-(defun mh-get-profile-field (field)
-  "Find and return the value of FIELD in the current buffer.
-Returns nil if the field is not in the buffer."
+(defun mh-profile-component (component)
+  "Return COMPONENT value from mhparam, or nil if unset."
+  (save-excursion
+    (mh-exec-cmd-quiet nil "mhparam" "-components" component)
+    (mh-profile-component-value component)))
+
+(defun mh-profile-component-value (component)
+  "Find and return the value of COMPONENT in the current buffer.
+Returns nil if the component is not in the buffer."
   (let ((case-fold-search t))
     (goto-char (point-min))
-    (cond ((not (re-search-forward (format "^%s" field) nil t)) nil)
+    (cond ((not (re-search-forward (format "^%s:" component) nil t)) nil)
           ((looking-at "[\t ]*$") nil)
           (t
            (re-search-forward "[\t ]*\\([^\t \n].*\\)$" nil t)
@@ -1963,99 +1969,6 @@
              (end-of-line)
              (buffer-substring start (point)))))))
 
-(defvar mh-find-path-run nil
-  "Non-nil if `mh-find-path' has been run already.")
-
-(defun mh-find-path ()
-  "Set variables from user's MH profile.
-
-This function sets `mh-user-path' from your \"Path:\" MH profile
-component (but defaults to \"Mail\" if one isn't present),
-`mh-draft-folder' from \"Draft-Folder:\", `mh-unseen-seq' from
-\"Unseen-Sequence:\", `mh-previous-seq' from
-\"Previous-Sequence:\", and `mh-inbox' from \"Inbox:\" (defaults
-to \"+inbox\").
-
-The hook `mh-find-path-hook' is run after these variables have
-been set. This hook can be used the change the value of these
-variables if you need to run with different values between MH and
-MH-E."
-  (mh-variants)
-  (unless mh-find-path-run
-    (setq mh-find-path-run t)
-    (save-excursion
-      ;; Be sure profile is fully expanded before switching buffers
-      (let ((profile (expand-file-name (or (getenv "MH") "~/.mh_profile"))))
-        (set-buffer (get-buffer-create mh-temp-buffer))
-        (setq buffer-offer-save nil)      ;for people who set default to t
-        (erase-buffer)
-        (condition-case err
-            (insert-file-contents profile)
-          (file-error
-           (mh-install profile err)))
-        (setq mh-user-path (mh-get-profile-field "Path:"))
-        (if (not mh-user-path)
-            (setq mh-user-path "Mail"))
-        (setq mh-user-path
-              (file-name-as-directory
-               (expand-file-name mh-user-path (expand-file-name "~"))))
-        (unless mh-x-image-cache-directory
-          (setq mh-x-image-cache-directory
-                (expand-file-name ".mhe-x-image-cache" mh-user-path)))
-        (setq mh-draft-folder (mh-get-profile-field "Draft-Folder:"))
-        (if mh-draft-folder
-            (progn
-              (if (not (mh-folder-name-p mh-draft-folder))
-                  (setq mh-draft-folder (format "+%s" mh-draft-folder)))
-              (if (not (file-exists-p (mh-expand-file-name mh-draft-folder)))
-                  (error
-                   "Draft folder \"%s\" not found.  Create it and try again"
-                         (mh-expand-file-name mh-draft-folder)))))
-        (setq mh-inbox (mh-get-profile-field "Inbox:"))
-        (cond ((not mh-inbox)
-               (setq mh-inbox "+inbox"))
-              ((not (mh-folder-name-p mh-inbox))
-               (setq mh-inbox (format "+%s" mh-inbox))))
-        (setq mh-unseen-seq (mh-get-profile-field "Unseen-Sequence:"))
-        (if mh-unseen-seq
-            (setq mh-unseen-seq (intern mh-unseen-seq))
-          (setq mh-unseen-seq 'unseen))   ;old MH default?
-        (setq mh-previous-seq (mh-get-profile-field "Previous-Sequence:"))
-        (if mh-previous-seq
-            (setq mh-previous-seq (intern mh-previous-seq)))
-        (run-hooks 'mh-find-path-hook)
-        (mh-collect-folder-names)))))
-
-(defun mh-file-command-p (file)
-  "Return t if file FILE is the name of a executable regular file."
-  (and (file-regular-p file) (file-executable-p file)))
-
-(defvar mh-no-install nil)              ;do not run install-mh
-
-(defun mh-install (profile error-val)
-  "Initialize the MH environment.
-This is called if we fail to read the PROFILE file. ERROR-VAL is
-the error that made this call necessary."
-  (if (or (getenv "MH")
-          (file-exists-p profile)
-          mh-no-install)
-      (signal (car error-val)
-              (list (format "Cannot read MH profile \"%s\"" profile)
-                    (car (cdr (cdr error-val))))))
-  ;; The "install-mh" command will output a short note which
-  ;; 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-progs) "-auto")
-  ;; now try again to read the profile file
-  (erase-buffer)
-  (condition-case err
-      (insert-file-contents profile)
-    (file-error
-     (signal (car err)                  ;re-signal with more specific msg
-             (list (format "Cannot read MH profile \"%s\"" profile)
-                   (car (cdr (cdr err))))))))
-
 (defun mh-set-folder-modified-p (flag)
   "Mark current folder as modified or unmodified according to FLAG."
   (set-buffer-modified-p flag))
@@ -2594,12 +2507,6 @@
         (mh-handle-process-error command value)
       value)))
 
-(defun mh-profile-component (component)
-  "Return COMPONENT value from mhparam, or nil if unset."
-  (save-excursion
-    (mh-exec-cmd-quiet nil "mhparam" "-components" component)
-    (mh-get-profile-field (concat component ":"))))
-
 ;; Shush compiler.
 (eval-when-compile (defvar mark-active))