;;; mh-e.el --- GNU Emacs interface to the MH mailer
+;;; Copyright (C) 1985, 86, 87, 88, 89, 92 Free Software Foundation
+
;; Author: James Larus <larus@ginger.berkeley.edu>
;; Version: 3.7
-;; Last-Modified: 30 Jun 1992
+;; Keywords: mail
(defvar mh-e-RCS-id)
-(setq mh-e-RCS-id "$Header: /var/home/larus/lib/emacs/RCS/mh-e.el,v 3.1 90/09/28 15:47:58 larus Exp Locker: larus $")
-
-;;; Copyright (C) 1985, 86, 87, 88, 89, 92 Free Software Foundation
;; GNU Emacs is distributed in the hope that it will be useful,
;; but without any warranty. No author or distributor
(if (re-search-forward "^$\\|^-+$" nil nil)
(forward-line arg)))
+
+(defun mh-unshar (dir)
+ "Unshar the current message in the directory given by DIR."
+ (interactive "DUnshar in directory: ")
+ (let ((default-directory default-directory)
+ (errbuf " *Unshar Output*")
+ (curbuf (current-buffer))
+ (show-buffer mh-show-buffer)
+ start
+ )
+ (setq dir (expand-file-name dir))
+ (if (not (eq system-type 'vax-vms))
+ (setq dir (file-name-as-directory dir)))
+ (mh-show nil) ;;; force showing of current message
+ (save-excursion
+ (set-buffer show-buffer)
+ (goto-char (point-min))
+ (message "Looking for start of shar package ...")
+ (if (or (re-search-forward "^#![ \t]*/bin/sh" nil t)
+ (and (re-search-forward "^[^a-z0-9\"]*cut here" nil t)
+ (forward-line 1))
+ (re-search-forward "^#" nil t)
+ (re-search-forward "^: " nil t)
+ )
+ (progn
+ (beginning-of-line)
+ (setq start (point))
+ (set-buffer curbuf)
+ (pop-to-buffer errbuf)
+ (kill-region (point-max) (point-min))
+ (insert (format "Unsharing in directory \"%s\" ...\n\n" dir))
+ (message "Please wait ...")
+ (sit-for 0)
+ (set-buffer show-buffer)
+ (setq default-directory dir)
+ (call-process-region start (point-max)
+ "/bin/sh" nil errbuf t)
+ (pop-to-buffer curbuf)
+ (message "Unshar done")
+ )
+ (error "Can't find start of shar file")
+ )
+ )
+ )
+ )
+
\f
;;; Build the folder-mode keymap:
(define-key mh-folder-mode-map "\ef" 'mh-visit-folder)
(define-key mh-folder-mode-map "\ek" 'mh-kill-folder)
(define-key mh-folder-mode-map "\el" 'mh-list-folders)
+(define-key mh-folder-mode-map "\en" 'mh-unshar)
(define-key mh-folder-mode-map "\eo" 'mh-write-msg-to-file)
(define-key mh-folder-mode-map "\ep" 'mh-pack-folder)
(define-key mh-folder-mode-map "\es" 'mh-search-folder)