[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/gnus/rfc2231.el
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/gnus/rfc2231.el |
Date: |
Sat, 04 Sep 2004 09:28:37 -0400 |
Index: emacs/lisp/gnus/rfc2231.el
diff -c emacs/lisp/gnus/rfc2231.el:1.5 emacs/lisp/gnus/rfc2231.el:1.6
*** emacs/lisp/gnus/rfc2231.el:1.5 Mon Sep 1 15:45:27 2003
--- emacs/lisp/gnus/rfc2231.el Sat Sep 4 13:13:44 2004
***************
*** 1,6 ****
! ;;; rfc2231.el --- functions for decoding rfc2231 headers
! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <address@hidden>
;; This file is part of GNU Emacs.
--- 1,7 ----
! ;;; rfc2231.el --- Functions for decoding rfc2231 headers
! ;; Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
! ;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <address@hidden>
;; This file is part of GNU Emacs.
***************
*** 26,36 ****
--- 27,46 ----
(eval-when-compile (require 'cl))
(require 'ietf-drums)
+ (require 'rfc2047)
+ (autoload 'mm-encode-body "mm-bodies")
+ (autoload 'mail-header-remove-whitespace "mail-parse")
+ (autoload 'mail-header-remove-comments "mail-parse")
(defun rfc2231-get-value (ct attribute)
"Return the value of ATTRIBUTE from CT."
(cdr (assq attribute (cdr ct))))
+ (defun rfc2231-parse-qp-string (string)
+ "Parse QP-encoded string using `rfc2231-parse-string'.
+ N.B. This is in violation with RFC2047, but it seem to be in common use."
+ (rfc2231-parse-string (rfc2047-decode-string string)))
+
(defun rfc2231-parse-string (string)
"Parse STRING and return a list.
The list will be on the form
***************
*** 47,52 ****
--- 57,65 ----
(mail-header-remove-comments string)))
(let ((table (copy-syntax-table ietf-drums-syntax-table)))
(modify-syntax-entry ?\' "w" table)
+ (modify-syntax-entry ?* " " table)
+ (modify-syntax-entry ?\; " " table)
+ (modify-syntax-entry ?= " " table)
;; The following isn't valid, but one should be liberal
;; in what one receives.
(modify-syntax-entry ?\: "w" table)
***************
*** 79,85 ****
(when (eq c ?*)
(forward-char 1)
(setq c (char-after))
! (when (memq c ntoken)
(setq number
(string-to-number
(buffer-substring
--- 92,100 ----
(when (eq c ?*)
(forward-char 1)
(setq c (char-after))
! (if (not (memq c ntoken))
! (setq encoded t
! number nil)
(setq number
(string-to-number
(buffer-substring
***************
*** 104,113 ****
(setq value
(buffer-substring (1+ (point))
(progn (forward-sexp 1) (1- (point))))))
! ((and (memq c ttoken)
(not (memq c stoken)))
(setq value (buffer-substring
! (point) (progn (forward-sexp 1) (point)))))
(t
(error "Invalid header: %s" string)))
(when encoded
--- 119,129 ----
(setq value
(buffer-substring (1+ (point))
(progn (forward-sexp 1) (1- (point))))))
! ((and (or (memq c ttoken)
! (> c ?\177)) ;; EXTENSION: Support non-ascii chars.
(not (memq c stoken)))
(setq value (buffer-substring
! (point) (progn (forward-sexp) (point)))))
(t
(error "Invalid header: %s" string)))
(when encoded
***************
*** 140,149 ****
(string-to-number (buffer-substring (point) (+ (point) 2)) 16)
(delete-region (1- (point)) (+ (point) 2)))))
;; Encode using the charset, if any.
! (when (and (< (length elems) 1)
! (not (equal (intern (car elems)) 'us-ascii)))
(mm-decode-coding-region (point-min) (point-max)
! (intern (car elems))))
(buffer-string))))
(defun rfc2231-encode-string (param value)
--- 156,166 ----
(string-to-number (buffer-substring (point) (+ (point) 2)) 16)
(delete-region (1- (point)) (+ (point) 2)))))
;; Encode using the charset, if any.
! (when (and (mm-multibyte-p)
! (> (length elems) 1)
! (not (equal (intern (downcase (car elems))) 'us-ascii)))
(mm-decode-coding-region (point-min) (point-max)
! (intern (downcase (car elems)))))
(buffer-string))))
(defun rfc2231-encode-string (param value)
***************
*** 175,181 ****
(goto-char (point-min))
(while (not (eobp))
(when (> (current-column) 60)
! (insert "\n")
(setq broken t))
(if (or (not (memq (following-char) ascii))
(memq (following-char) control)
--- 192,198 ----
(goto-char (point-min))
(while (not (eobp))
(when (> (current-column) 60)
! (insert ";\n")
(setq broken t))
(if (or (not (memq (following-char) ascii))
(memq (following-char) control)
***************
*** 187,198 ****
(delete-char 1))
(forward-char 1)))
(goto-char (point-min))
! (insert (or charset "ascii") "''")
(goto-char (point-min))
(if (not broken)
(insert param "*=")
(while (not (eobp))
! (insert param "*" (format "%d" (incf num)) "*=")
(forward-line 1))))
(spacep
(goto-char (point-min))
--- 204,216 ----
(delete-char 1))
(forward-char 1)))
(goto-char (point-min))
! (insert (symbol-name (or charset 'us-ascii)) "''")
(goto-char (point-min))
(if (not broken)
(insert param "*=")
(while (not (eobp))
! (insert (if (>= num 0) " " "\n ")
! param "*" (format "%d" (incf num)) "*=")
(forward-line 1))))
(spacep
(goto-char (point-min))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/gnus/rfc2231.el,
Miles Bader <=