Mercurial > emacs
annotate lisp/mail/mailpost.el @ 28923:dcafe3c9cd6c
(sh-while-getopts) <sh>: Handle case that
user-specified option string is empty.
| author | Gerd Moellmann <gerd@gnu.org> |
|---|---|
| date | Mon, 15 May 2000 20:14:39 +0000 |
| parents | fb6b9c37cdc4 |
| children | 3baeb77c0e39 |
| rev | line source |
|---|---|
|
791
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
1 ;;; mailpost.el --- RMAIL coupler to /usr/uci/post mailer |
|
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
2 |
|
840
113281b361ec
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
811
diff
changeset
|
3 ;; This is in the public domain |
|
113281b361ec
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
811
diff
changeset
|
4 ;; since Delp distributed it without a copyright notice in 1986. |
|
113281b361ec
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
811
diff
changeset
|
5 |
|
791
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
6 ;; Author: Gary Delp <delp@huey.Udel.Edu> |
|
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
7 ;; Maintainer: FSF |
|
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
8 ;; Created: 13 Jan 1986 |
|
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
791
diff
changeset
|
9 ;; Keywords: mail |
|
791
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
10 |
|
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
11 ;;; Commentary: |
|
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
222
diff
changeset
|
12 |
| 4 | 13 ;; Yet another mail interface. this for the rmail system to provide |
| 14 ;; the missing sendmail interface on systems without /usr/lib/sendmail, | |
| 15 ;; but with /usr/uci/post. | |
|
791
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
16 |
|
203c23c9f22c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
663
diff
changeset
|
17 ;;; Code: |
| 4 | 18 |
| 923 | 19 (require 'mailalias) |
| 20 (require 'sendmail) | |
| 21 | |
| 4 | 22 ;; (setq send-mail-function 'post-mail-send-it) |
| 23 | |
| 24 (defun post-mail-send-it () | |
| 222 | 25 "The MH -post interface for `rmail-mail' to call. |
| 26 To use it, include \"(setq send-mail-function 'post-mail-send-it)\" in | |
| 27 site-init." | |
| 4 | 28 (let ((errbuf (if mail-interactive |
| 29 (generate-new-buffer " post-mail errors") | |
| 30 0)) | |
|
26039
fb6b9c37cdc4
Use make-temp-file.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
25418
diff
changeset
|
31 (temfile (make-temp-file ",rpost")) |
| 4 | 32 (tembuf (generate-new-buffer " post-mail temp")) |
| 33 (case-fold-search nil) | |
| 34 delimline | |
| 35 (mailbuf (current-buffer))) | |
| 36 (unwind-protect | |
| 37 (save-excursion | |
| 38 (set-buffer tembuf) | |
| 39 (erase-buffer) | |
| 40 (insert-buffer-substring mailbuf) | |
| 41 (goto-char (point-max)) | |
| 42 ;; require one newline at the end. | |
| 43 (or (= (preceding-char) ?\n) | |
| 44 (insert ?\n)) | |
| 45 ;; Change header-delimiter to be what post-mail expects. | |
|
21921
ea04bf51647c
(post-mail-send-it): Use mail-sendmail-undelimit-header.
Richard M. Stallman <rms@gnu.org>
parents:
18383
diff
changeset
|
46 (mail-sendmail-undelimit-header) |
| 4 | 47 (setq delimline (point-marker)) |
| 48 (if mail-aliases | |
| 49 (expand-mail-aliases (point-min) delimline)) | |
| 50 (goto-char (point-min)) | |
| 51 ;; ignore any blank lines in the header | |
| 52 (while (and (re-search-forward "\n\n\n*" delimline t) | |
| 53 (< (point) delimline)) | |
| 54 (replace-match "\n")) | |
| 55 ;; Find and handle any FCC fields. | |
| 56 (let ((case-fold-search t)) | |
| 57 (goto-char (point-min)) | |
| 58 (if (re-search-forward "^FCC:" delimline t) | |
| 59 (mail-do-fcc delimline)) | |
| 60 ;; If there is a From and no Sender, put it a Sender. | |
| 61 (goto-char (point-min)) | |
| 62 (and (re-search-forward "^From:" delimline t) | |
| 63 (not (save-excursion | |
| 64 (goto-char (point-min)) | |
| 65 (re-search-forward "^Sender:" delimline t))) | |
| 66 (progn | |
| 67 (forward-line 1) | |
| 68 (insert "Sender: " (user-login-name) "\n"))) | |
| 69 ;; don't send out a blank subject line | |
| 70 (goto-char (point-min)) | |
| 71 (if (re-search-forward "^Subject:[ \t]*\n" delimline t) | |
| 72 (replace-match "")) | |
| 73 (if mail-interactive | |
| 74 (save-excursion | |
| 75 (set-buffer errbuf) | |
| 76 (erase-buffer)))) | |
| 77 (set-file-modes temfile 384) | |
|
26039
fb6b9c37cdc4
Use make-temp-file.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
25418
diff
changeset
|
78 (write-file temfile) |
| 4 | 79 (apply 'call-process |
| 80 (append (list (if (boundp 'post-mail-program) | |
| 81 post-mail-program | |
| 82 "/usr/uci/lib/mh/post") | |
| 83 nil errbuf nil | |
| 84 "-nofilter" "-msgid") | |
| 85 (if mail-interactive '("-watch") '("-nowatch")) | |
| 86 (list temfile))) | |
| 87 (if mail-interactive | |
| 88 (save-excursion | |
| 89 (set-buffer errbuf) | |
| 90 (goto-char (point-min)) | |
| 91 (while (re-search-forward "\n\n* *" nil t) | |
| 92 (replace-match "; ")) | |
| 93 (if (not (zerop (buffer-size))) | |
| 94 (error "Sending...failed to %s" | |
| 95 (buffer-substring (point-min) (point-max))))))) | |
| 96 (kill-buffer tembuf) | |
| 97 (if (bufferp errbuf) | |
| 98 (switch-to-buffer errbuf))))) | |
|
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
222
diff
changeset
|
99 |
| 18383 | 100 (provide 'mailpost) |
| 101 | |
|
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
222
diff
changeset
|
102 ;;; mailpost.el ends here |
