# HG changeset patch # User Richard M. Stallman # Date 770130415 0 # Node ID b99162ca52471c4be1c8329f15650585f2c63dd9 # Parent 3cfe5791ddfbaafe95c5287067e3c9c05492ce2a (build-mail-aliases): Handle source directives. Handle MAILRC envvar. diff -r 3cfe5791ddfb -r b99162ca5247 lisp/mail/mailalias.el --- a/lisp/mail/mailalias.el Sat May 28 12:54:52 1994 +0000 +++ b/lisp/mail/mailalias.el Sat May 28 13:06:55 1994 +0000 @@ -105,7 +105,7 @@ ;; Called by mail-setup, or similar functions, only if ~/.mailrc exists. (defun build-mail-aliases (&optional file) "Read mail aliases from `~/.mailrc' and set `mail-aliases'." - (setq file (expand-file-name (or file "~/.mailrc"))) + (setq file (expand-file-name (or file (or (getenv "MAILRC") "~/.mailrc")))) (let ((buffer nil) (obuf (current-buffer))) (unwind-protect @@ -113,22 +113,35 @@ (setq buffer (generate-new-buffer "mailrc")) (buffer-disable-undo buffer) (set-buffer buffer) - (cond ((get-file-buffer file) - (insert (save-excursion - (set-buffer (get-file-buffer file)) - (buffer-substring (point-min) (point-max))))) - ((not (file-exists-p file))) - (t (insert-file-contents file))) - ;; Don't lose if no final newline. - (goto-char (point-max)) - (or (eq (preceding-char) ?\n) (newline)) - (goto-char (point-min)) - ;; handle "\\\n" continuation lines - (while (not (eobp)) - (end-of-line) - (if (= (preceding-char) ?\\) - (progn (delete-char -1) (delete-char 1) (insert ?\ )) + (while file + (cond ((get-file-buffer file) + (insert (save-excursion + (set-buffer (get-file-buffer file)) + (buffer-substring (point-min) (point-max))))) + ((file-exists-p file) (insert-file-contents file)) + ((file-exists-p (setq file (concat "~/" file))) + (insert-file-contents file)) + (t (setq file nil))) + ;; Don't lose if no final newline. + (goto-char (point-max)) + (or (eq (preceding-char) ?\n) (newline)) + (goto-char (point-min)) + ;; handle "\\\n" continuation lines + (while (not (eobp)) + (end-of-line) + (if (= (preceding-char) ?\\) + (progn (delete-char -1) (delete-char 1) (insert ?\ )) (forward-char 1))) + (goto-char (point-min)) + ;; handle `source' directives -- Eddy/1994/May/25 + (cond ((re-search-forward "^source[ \t]+" nil t) + (re-search-forward "\\S-+") + (setq file + (buffer-substring (match-beginning 0) (match-end 0))) + (beginning-of-line) + (insert "# ") ; to ensure we don't re-process this file + (beginning-of-line)) + (t (setq file nil)))) (goto-char (point-min)) (while (or (re-search-forward "^a\\(lias\\|\\)[ \t]+" nil t) (re-search-forward "^g\\(roup\\|\\)[ \t]+" nil t))