aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric S. Raymond1993-03-25 01:49:59 +0000
committerEric S. Raymond1993-03-25 01:49:59 +0000
commit8fbea12c08909aa7c4fdfc454bee382d5d3c7f44 (patch)
treef48cb18c2e6846dde1e5e8176811ed9c78a06d30
parent8e0ff8c8d411b59f3ca7db68dfb4b82fae8aa2e8 (diff)
downloademacs-8fbea12c08909aa7c4fdfc454bee382d5d3c7f44.tar.gz
emacs-8fbea12c08909aa7c4fdfc454bee382d5d3c7f44.zip
(mh-unshar) Added.
-rw-r--r--lisp/mh-e.el47
1 files changed, 47 insertions, 0 deletions
diff --git a/lisp/mh-e.el b/lisp/mh-e.el
index b094934bc4a..63cc9efe2d8 100644
--- a/lisp/mh-e.el
+++ b/lisp/mh-e.el
@@ -2740,6 +2740,52 @@ Assumes that any filename that starts with '+' is a folder name."
2740 (if (re-search-forward "^$\\|^-+$" nil nil) 2740 (if (re-search-forward "^$\\|^-+$" nil nil)
2741 (forward-line arg))) 2741 (forward-line arg)))
2742 2742
2743
2744(defun mh-unshar (dir)
2745 "Unshar the current message in the directory given by DIR."
2746 (interactive "DUnshar in directory: ")
2747 (let ((default-directory default-directory)
2748 (errbuf " *Unshar Output*")
2749 (curbuf (current-buffer))
2750 (show-buffer mh-show-buffer)
2751 start
2752 )
2753 (setq dir (expand-file-name dir))
2754 (if (not (eq system-type 'vax-vms))
2755 (setq dir (file-name-as-directory dir)))
2756 (mh-show nil) ;;; force showing of current message
2757 (save-excursion
2758 (set-buffer show-buffer)
2759 (goto-char (point-min))
2760 (message "Looking for start of shar package ...")
2761 (if (or (re-search-forward "^#![ \t]*/bin/sh" nil t)
2762 (and (re-search-forward "^[^a-z0-9\"]*cut here" nil t)
2763 (forward-line 1))
2764 (re-search-forward "^#" nil t)
2765 (re-search-forward "^: " nil t)
2766 )
2767 (progn
2768 (beginning-of-line)
2769 (setq start (point))
2770 (set-buffer curbuf)
2771 (pop-to-buffer errbuf)
2772 (kill-region (point-max) (point-min))
2773 (insert (format "Unsharing in directory \"%s\" ...\n\n" dir))
2774 (message "Please wait ...")
2775 (sit-for 0)
2776 (set-buffer show-buffer)
2777 (setq default-directory dir)
2778 (call-process-region start (point-max)
2779 "/bin/sh" nil errbuf t)
2780 (pop-to-buffer curbuf)
2781 (message "Unshar done")
2782 )
2783 (error "Can't find start of shar file")
2784 )
2785 )
2786 )
2787 )
2788
2743 2789
2744 2790
2745;;; Build the folder-mode keymap: 2791;;; Build the folder-mode keymap:
@@ -2762,6 +2808,7 @@ Assumes that any filename that starts with '+' is a folder name."
2762(define-key mh-folder-mode-map "\ef" 'mh-visit-folder) 2808(define-key mh-folder-mode-map "\ef" 'mh-visit-folder)
2763(define-key mh-folder-mode-map "\ek" 'mh-kill-folder) 2809(define-key mh-folder-mode-map "\ek" 'mh-kill-folder)
2764(define-key mh-folder-mode-map "\el" 'mh-list-folders) 2810(define-key mh-folder-mode-map "\el" 'mh-list-folders)
2811(define-key mh-folder-mode-map "\en" 'mh-unshar)
2765(define-key mh-folder-mode-map "\eo" 'mh-write-msg-to-file) 2812(define-key mh-folder-mode-map "\eo" 'mh-write-msg-to-file)
2766(define-key mh-folder-mode-map "\ep" 'mh-pack-folder) 2813(define-key mh-folder-mode-map "\ep" 'mh-pack-folder)
2767(define-key mh-folder-mode-map "\es" 'mh-search-folder) 2814(define-key mh-folder-mode-map "\es" 'mh-search-folder)