emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/gnus/rfc2231.el [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/gnus/rfc2231.el [lexbind]
Date: Wed, 15 Sep 2004 20:34:19 -0400

Index: emacs/lisp/gnus/rfc2231.el
diff -c emacs/lisp/gnus/rfc2231.el:1.4.8.1 emacs/lisp/gnus/rfc2231.el:1.4.8.2
*** emacs/lisp/gnus/rfc2231.el:1.4.8.1  Tue Oct 14 23:34:51 2003
--- emacs/lisp/gnus/rfc2231.el  Thu Sep 16 00:12:16 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))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]