Mercurial > emacs
changeset 20490:c383d1397e12
(define-mail-alias): Handle backslash-quoting
within "-strings in DEFINITION if it comes from .mailrc.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 21 Dec 1997 02:07:32 +0000 |
parents | 35972a1f8f1b |
children | d884af34ba47 |
files | lisp/mail/mailalias.el |
diffstat | 1 files changed, 18 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/mail/mailalias.el Sun Dec 21 02:06:32 1997 +0000 +++ b/lisp/mail/mailalias.el Sun Dec 21 02:07:32 1997 +0000 @@ -317,21 +317,33 @@ ;; If DEFINITION is null string, avoid looping even once. (start (and (not (equal definition "")) 0)) (L (length definition)) + convert-backslash end tem) (while start + (setq convert-backslash nil) ;; If we're reading from the mailrc file, then addresses are delimited ;; by spaces, and addresses with embedded spaces must be surrounded by ;; double-quotes. Otherwise, addresses are separated by commas. (if from-mailrc-file (if (eq ?\" (aref definition start)) - (setq start (1+ start) - end (string-match "\"[ \t,]*" definition start)) + (progn (string-match "[^\\]\\(\\([\\][\\]\\)*\\)\"[ \t,]*" definition start) + (setq start (1+ start) + end (match-end 1) + convert-backslash t)) (setq end (string-match "[ \t,]+" definition start))) (setq end (string-match "[ \t\n,]*,[ \t\n,]*" definition start))) - (setq result (cons (substring definition start end) result)) - (setq start (and end - (/= (match-end 0) L) - (match-end 0)))) + (let ((temp (substring definition start end)) + (pos 0)) + (setq start (and end + (/= (match-end 0) L) + (match-end 0))) + (if convert-backslash + (while (string-match "[\\]" temp pos) + (setq temp (replace-match "" t t temp)) + (if start + (setq start (1- start))) + (setq pos (match-end 0)))) + (setq result (cons temp result)))) (setq definition (mapconcat (function identity) (nreverse result) ", "))