+Thu Sep 3 15:23:22 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Pterodactyl Gnus v0.14 is released.
+
+1998-09-03 15:08:30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-bodies.el (mm-body-encoding): Go through the buffer to make
+ sure we have 7bit.
+
+1998-09-02 14:38:18 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-msg.el (gnus-post-method): Use opened servers, and remove
+ ducplicates.
+ (gnus-inews-insert-mime-headers): Removed.
+
+ * message.el (message-caesar-region): Protect against MULE chars.
+
+1998-09-02 00:36:23 Hallvard B. Furuseth <h.b.furuseth@usit.uio.no>
+
+ * mm-util.el (if): fset the right function.
+
+1998-09-02 00:31:53 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-article-decode-charset): Use real
+ read-coding-system.
+
+1998-09-01 17:58:40 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-bodies.el (mm-decode-body): Protect against malformed
+ base64.
+ (mm-decode-body): Check that buffer-file-coding-system is
+ non-nil.
+
Tue Sep 1 10:29:33 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Pterodactyl Gnus v0.13 is released.
(list gnus-post-method)))
gnus-secondary-select-methods
(mapcar 'cdr gnus-server-alist)
+ gnus-opened-servers
(list gnus-select-method)
(list group-method)))
method-alist post-methods method)
;; Weed out all mail methods.
(while methods
(setq method (gnus-server-get-method "" (pop methods)))
- (when (or (gnus-method-option-p method 'post)
- (gnus-method-option-p method 'post-mail))
+ (when (and (or (gnus-method-option-p method 'post)
+ (gnus-method-option-p method 'post-mail))
+ (not (member method post-methods)))
(push method post-methods)))
;; Create a name-method alist.
(setq method-alist
(concat " - \"" xemacs-codename "\""))))
(t emacs-version))))
-;; Written by "Mr. Per Persson" <pp@gnu.ai.mit.edu>.
-(defun gnus-inews-insert-mime-headers ()
- "Insert MIME headers.
-Assumes ISO-Latin-1 is used iff 8-bit characters are present."
- (goto-char (point-min))
- (let ((mail-header-separator
- (progn
- (goto-char (point-min))
- (if (and (search-forward (concat "\n" mail-header-separator "\n")
- nil t)
- (not (search-backward "\n\n" nil t)))
- mail-header-separator
- ""))))
- (or (mail-position-on-field "Mime-Version")
- (insert "1.0")
- (cond ((save-restriction
- (widen)
- (goto-char (point-min))
- (re-search-forward "[^\000-\177]" nil t))
- (or (mail-position-on-field "Content-Type")
- (insert "text/plain; charset=ISO-8859-1"))
- (or (mail-position-on-field "Content-Transfer-Encoding")
- (insert "8bit")))
- (t (or (mail-position-on-field "Content-Type")
- (insert "text/plain; charset=US-ASCII"))
- (or (mail-position-on-field "Content-Transfer-Encoding")
- (insert "7bit")))))))
-
-(custom-add-option 'message-header-hook 'gnus-inews-insert-mime-headers)
-
\f
;;;
;;; Gnus Mail Functions
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.13"
+(defconst gnus-version-number "0.14"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
decode-coding-string mail-aliases-setup
mm-copy-tree url-view-url w3-prepare-buffer
set-buffer-multibyte
- find-non-ascii-charset-region char-charset))
+ find-non-ascii-charset-region char-charset
+ mule-write-region-no-coding-system
+ find-charset-region))
(maybe-bind '(global-face-data
mark-active transient-mark-mode mouse-selection-click-count
mouse-selection-click-count-buffer buffer-display-table
gnus-newsgroup-name gnus-article-x-face-too-ugly
mail-mode-hook enable-multibyte-characters
adaptive-fill-first-line-regexp adaptive-fill-regexp
- url-current-mime-headers)))
+ url-current-mime-headers buffer-file-coding-system)))
(maybe-bind '(mail-mode-hook
enable-multibyte-characters browse-url-browser-function
adaptive-fill-first-line-regexp adaptive-fill-regexp
;; text properties.
(while (< b e)
(subst-char-in-region
- b (1+ b) (char-after b)
- (aref message-caesar-translation-table (char-after b)))
+ (when (< (char-after b) 255)
+ b (1+ b) (char-after b)
+ (aref message-caesar-translation-table (char-after b))))
(incf b))))
(defun message-make-caesar-translation-table (n)
;;; Code:
+(eval-and-compile
+ (if (not (fboundp 'base64-encode-string))
+ (require 'base64)))
(require 'mm-util)
+(require 'qp)
(defun mm-encode-body ()
"Encode a body.
(defun mm-body-encoding ()
"Return the encoding of the current buffer."
- (if (null (delq 'ascii (find-charset-region (point-min) (point-max))))
+ (if (and
+ (null (delq 'ascii (find-charset-region (point-min) (point-max))))
+ ;;;!!!The following is necessary because the function
+ ;;;!!!above seems to return the wrong result under Emacs 20.3.
+ ;;;!!!Sometimes.
+ (save-excursion
+ (let (found)
+ (goto-char (point-min))
+ (while (and (not found)
+ (not (eobp)))
+ (when (> (char-int (following-char)) 127)
+ (setq found t))
+ (forward-char 1))
+ (not found))))
'7bit
'8bit))
((eq encoding 'quoted-printable)
(quoted-printable-decode-region (point-min) (point-max)))
((eq encoding 'base64)
- (base64-decode-region (point-min) (point-max)))
+ (condition-case ()
+ (base64-decode-region (point-min) (point-max))
+ (error nil)))
((memq encoding '(7bit 8bit binary))
)
(t
(let (mule-charset)
(when (and charset
(setq mule-charset (mm-charset-to-coding-system charset))
+ buffer-file-coding-system
(not (mm-coding-system-equal
buffer-file-coding-system mule-charset)))
(mm-decode-coding-region (point-min) (point-max) mule-charset))))))
;;; Code:
-(eval-and-compile
- (if (fboundp 'decode-coding-string)
- (fset 'mm-decode-coding-string 'decode-coding-string)
- (fset 'mm-decode-coding-string (lambda (s a) s))))
-
-(eval-and-compile
- (if (fboundp 'encode-coding-string)
- (fset 'mm-encode-coding-string 'encode-coding-string)
- (fset 'mm-encode-coding-string (lambda (s a) s))))
-
-(eval-and-compile
- (if (fboundp 'encode-coding-region)
- (fset 'mm-encode-coding-region 'encode-coding-region)
- (fset 'mm-encode-coding-string 'ignore)))
-
-(eval-and-compile
- (if (fboundp 'decode-coding-region)
- (fset 'mm-decode-coding-region 'decode-coding-region)
- (fset 'mm-decode-coding-string 'ignore)))
-
-(eval-and-compile
- (if (fboundp 'coding-system-list)
- (fset 'mm-coding-system-list 'coding-system-list)
- (fset 'mm-coding-system-list 'ignore)))
-
-(eval-and-compile
- (if (fboundp 'coding-system-equal)
- (fset 'mm-coding-system-equal 'coding-system-equal)
- (fset 'mm-coding-system-equal 'equal)))
-
(defvar mm-mime-mule-charset-alist
'((us-ascii ascii)
(iso-8859-1 latin-iso8859-1)
chinese-cns11643-7))
"Alist of MIME-charset/MULE-charsets.")
+
+(eval-and-compile
+ (if (fboundp 'decode-coding-string)
+ (fset 'mm-decode-coding-string 'decode-coding-string)
+ (fset 'mm-decode-coding-string (lambda (s a) s)))
+
+ (if (fboundp 'encode-coding-string)
+ (fset 'mm-encode-coding-string 'encode-coding-string)
+ (fset 'mm-encode-coding-string (lambda (s a) s)))
+
+ (if (fboundp 'encode-coding-region)
+ (fset 'mm-encode-coding-region 'encode-coding-region)
+ (fset 'mm-encode-coding-region 'ignore))
+
+ (if (fboundp 'decode-coding-region)
+ (fset 'mm-decode-coding-region 'decode-coding-region)
+ (fset 'mm-decode-coding-region 'ignore))
+
+ (if (fboundp 'coding-system-list)
+ (fset 'mm-coding-system-list 'coding-system-list)
+ (fset 'mm-coding-system-list 'ignore))
+
+ (if (fboundp 'coding-system-equal)
+ (fset 'mm-coding-system-equal 'coding-system-equal)
+ (fset 'mm-coding-system-equal 'equal))
+
+ (if (fboundp 'read-coding-system)
+ (fset 'mm-read-coding-system 'read-coding-system)
+ (defun mm-read-coding-system (prompt)
+ "Prompt the user for a coding system."
+ (completing-read
+ prompt (mapcar (lambda (s) (list (symbol-name (car s))))
+ mm-mime-mule-charset-alist)))))
+
+
(defvar mm-charset-coding-system-alist
(let ((rest
'((us-ascii . iso-8859-1)
dest)
"Charset/coding system alist.")
+
(defun mm-mule-charset-to-mime-charset (charset)
"Return the MIME charset corresponding to MULE CHARSET."
(let ((alist mm-mime-mule-charset-alist)
(when (string-match "charset *= *\"? *\\([-0-9a-zA-Z_]+\\)\"? *$" header)
(intern (downcase (match-string 1 header)))))
-(defun mm-read-coding-system (prompt)
- "Prompt the user for a coding system."
- (completing-read
- prompt (mapcar (lambda (s) (list (symbol-name (car s))))
- mm-mime-mule-charset-alist)))
-
(provide 'mm-util)
;;; mm-util.el ends here
;;; Code:
-(require 'base64)
+(eval-and-compile
+ (if (not (fboundp 'base64-encode-string))
+ (require 'base64)))
(require 'qp)
(require 'mm-util)
-@echo off
-
-rem Written by David Charlap <shamino@writeme.com>
-
-rem There are two catches, however. The emacs.bat batch file may not exist
-rem in all distributions. It is part of the Voelker build of Emacs 19.34
-rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html). If the user
-rem installs Gnus with some other build, he may have to replace calls to
-rem %1\emacs.bat with something else.
-rem
-rem Also, the emacs.bat file that Voelker ships does not accept more than 9
-rem parameters, so the attempts to compile the .texi files will fail. To
-rem fix that (at least on NT. I don't know about Win95), the following
-rem change should be made to emacs.bat:
-rem
-rem %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
-rem
-rem should become
-rem
-rem %emacs_dir%\bin\emacs.exe %*
-rem
-rem which will allow the batch file to accept an unlimited number of
-rem parameters.
-
-if "%1" == "" goto usage
-
-cd lisp
-call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile
-if not "%2" == "copy" goto info
-copy *.el* %1\lisp
-
-:info
-cd ..\texi
-call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-if not "%2" == "copy" goto done
-copy gnus %1\info
-copy gnus-?? %1\info
-copy message %1\info
-
-:etc
-cd ..\etc
-copy gnus-tut.txt %1\etc
-
-:done
-cd ..
-goto end
-
-:usage
-echo Usage: make ^<emacs-dir^> [copy]
-echo.
-echo where: ^<emacs-dir^> is the directory you installed emacs in
-echo eg. d:\emacs\19.34
-echo copy indicates that the compiled files should be copied to your
-echo emacs lisp, info, and etc directories
-
-:end
+@echo off\r
+\r
+rem Written by David Charlap <shamino@writeme.com>\r
+\r
+rem There are two catches, however. The emacs.bat batch file may not exist\r
+rem in all distributions. It is part of the Voelker build of Emacs 19.34\r
+rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html). If the user\r
+rem installs Gnus with some other build, he may have to replace calls to\r
+rem %1\emacs.bat with something else.\r
+rem \r
+rem Also, the emacs.bat file that Voelker ships does not accept more than 9\r
+rem parameters, so the attempts to compile the .texi files will fail. To\r
+rem fix that (at least on NT. I don't know about Win95), the following\r
+rem change should be made to emacs.bat:\r
+rem \r
+rem %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9\r
+rem \r
+rem should become\r
+rem \r
+rem %emacs_dir%\bin\emacs.exe %*\r
+rem \r
+rem which will allow the batch file to accept an unlimited number of\r
+rem parameters.\r
+\r
+if "%1" == "" goto usage\r
+\r
+cd lisp\r
+call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
+if not "%2" == "copy" goto info\r
+copy *.el* %1\lisp\r
+\r
+:info\r
+cd ..\texi\r
+call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
+call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
+if not "%2" == "copy" goto done\r
+copy gnus %1\info\r
+copy gnus-?? %1\info\r
+copy message %1\info\r
+\r
+:etc\r
+cd ..\etc\r
+copy gnus-tut.txt %1\etc\r
+\r
+:done\r
+cd ..\r
+goto end\r
+\r
+:usage\r
+echo Usage: make ^<emacs-dir^> [copy]\r
+echo.\r
+echo where: ^<emacs-dir^> is the directory you installed emacs in\r
+echo eg. d:\emacs\19.34\r
+echo copy indicates that the compiled files should be copied to your\r
+echo emacs lisp, info, and etc directories\r
+\r
+:end\r
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Pterodactyl Gnus 0.13 Manual
+@settitle Pterodactyl Gnus 0.14 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Pterodactyl Gnus 0.13 Manual
+@title Pterodactyl Gnus 0.14 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Pterodactyl Gnus 0.13.
+This manual corresponds to Pterodactyl Gnus 0.14.
@end ifinfo
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Pterodactyl Message 0.13 Manual
+@settitle Pterodactyl Message 0.14 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Pterodactyl Message 0.13 Manual
+@title Pterodactyl Message 0.14 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Pterodactyl Message 0.13. Message is
+This manual corresponds to Pterodactyl Message 0.14. Message is
distributed with the Gnus distribution bearing the same version number
as this manual has.