;;; std11.el --- STD 11 functions for GNU Emacs
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Keywords: mail, news, RFC 822, STD 11
-;; Version: $Id: std11.el,v 0.37 1996-12-16 07:12:38 morioka Exp $
+;; Version: $Id: std11.el,v 0.40 1997-03-03 08:03:06 shuhei-k Exp $
;; This file is part of MU (Message Utilities).
;;; @ quoted-string
;;;
+(defun std11-wrap-as-quoted-pairs (string specials)
+ (let (dest
+ (i 0)
+ (b 0)
+ (len (length string))
+ )
+ (while (< i len)
+ (let ((chr (aref string i)))
+ (if (memq chr specials)
+ (setq dest (concat dest (substring string b i) "\\")
+ b i)
+ ))
+ (setq i (1+ i))
+ )
+ (concat dest (substring string b))
+ ))
+
(defconst std11-non-qtext-char-list '(?\" ?\\ ?\r ?\n))
(defun std11-wrap-as-quoted-string (string)
"Wrap STRING as RFC 822 quoted-string. [std11.el]"
(concat "\""
- (mapconcat (function
- (lambda (chr)
- (if (memq chr std11-non-qtext-char-list)
- (concat "\\" (char-to-string chr))
- (char-to-string chr)
- )
- )) string "")
+ (std11-wrap-as-quoted-pairs string std11-non-qtext-char-list)
"\""))
(defun std11-strip-quoted-pair (string)
represents addr-spec of RFC 822. [std11.el]"
(mapconcat (function
(lambda (token)
- (if (let ((name (car token)))
- (or (eq name 'spaces)
- (eq name 'comment)
- ))
- ""
- (cdr token)
- )))
+ (let ((name (car token)))
+ (cond
+ ((eq name 'spaces) "")
+ ((eq name 'comment) "")
+ ((eq name 'quoted-string)
+ (concat "\"" (cdr token) "\""))
+ (t (cdr token)))
+ )))
seq "")
)
(comment (nth 2 address))
phrase)
(if (eq (car addr) 'phrase-route-addr)
- (setq phrase (mapconcat (function
- (lambda (token)
- (cdr token)
- ))
- (nth 1 addr) ""))
+ (setq phrase
+ (mapconcat
+ (function
+ (lambda (token)
+ (let ((type (car token)))
+ (cond ((eq type 'quoted-string)
+ (std11-strip-quoted-pair (cdr token))
+ )
+ ((eq type 'comment)
+ (concat
+ "("
+ (std11-strip-quoted-pair (cdr token))
+ ")")
+ )
+ (t
+ (cdr token)
+ )))))
+ (nth 1 addr) ""))
)
- (or phrase comment)
+ (cond ((> (length phrase) 0) phrase)
+ (comment (std11-strip-quoted-pair comment))
+ )
))))