* MIME decoding broken on Win NT @ 1998-11-23 20:51 Matt Armstrong 1998-11-23 21:03 ` Shenghuo ZHU 1998-11-24 8:50 ` Shenghuo ZHU 0 siblings, 2 replies; 7+ messages in thread From: Matt Armstrong @ 1998-11-23 20:51 UTC (permalink / raw) MIME decoding is broken again under Win NT (it got fixed somewhere around 0.35, but broken somewhere since then). Under Win NT, default-buffer-file-coding-system is undecided-dos, not undecided-unix. There are places in the MIME handling within pgnus where the default buffer-file-coding-system is used, so cr/lf translation happens on binary stuff. I sent myself a binary attachment consisting of two bytes: "\r\n". Getting that to decode correctly (with the standard "1 b" key sequence) involved this patch: *** mm-decode.el.orig Mon Nov 23 11:52:04 1998 --- mm-decode.el Mon Nov 23 12:22:18 1998 *************** *** 447,453 **** (when (or (not (file-exists-p file)) (yes-or-no-p (format "File %s already exists; overwrite? " file))) ! (write-region (point-min) (point-max) file))))) (defun mm-pipe-part (handle) "Pipe HANDLE to a process." --- 447,458 ---- (when (or (not (file-exists-p file)) (yes-or-no-p (format "File %s already exists; overwrite? " file))) ! (let ((coding-system-for-write ! (if (equal "text" (car (split-string ! (car (mm-handle-type handle)) "/"))) ! 'buffer-file-coding-system ! 'binary))) ! (write-region (point-min) (point-max) file)))))) (defun mm-pipe-part (handle) But I still can't decode the picture of RMS in Lars' "MIME Test One" e-mail, so some holes still exist. I think a better fix would be a more systematic approach -- pouring through the MIME stuff and making sure non "text/*" parts never get processed in a buffer where default-buffer-file-coding-system is in effect. I'm using NT Emacs 20.3.1, base64.el, and no mailcap stuff. -- matta ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: MIME decoding broken on Win NT 1998-11-23 20:51 MIME decoding broken on Win NT Matt Armstrong @ 1998-11-23 21:03 ` Shenghuo ZHU 1998-11-24 10:15 ` Lars Magne Ingebrigtsen 1998-11-24 8:50 ` Shenghuo ZHU 1 sibling, 1 reply; 7+ messages in thread From: Shenghuo ZHU @ 1998-11-23 21:03 UTC (permalink / raw) >>>>> "MA" == Matt Armstrong <matta@geoworks.com> writes: MA> ! (let ((coding-system-for-write MA> ! (if (equal "text" (car (split-string MA> ! (car (mm-handle-type handle)) "/"))) MA> ! 'buffer-file-coding-system ^ Should this single quote be deleted? MA> ! 'binary))) MA> ! (write-region (point-min) (point-max) file)))))) -- Shenghuo ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: MIME decoding broken on Win NT 1998-11-23 21:03 ` Shenghuo ZHU @ 1998-11-24 10:15 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 7+ messages in thread From: Lars Magne Ingebrigtsen @ 1998-11-24 10:15 UTC (permalink / raw) Shenghuo ZHU <zsh@cs.rochester.edu> writes: > MA> ! 'buffer-file-coding-system > ^ Should this single quote be deleted? Yup; I've deleted that quote in 0.54. -- (domestic pets only, the antidote for overdose, milk.) larsi@gnus.org * Lars Magne Ingebrigtsen ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: MIME decoding broken on Win NT 1998-11-23 20:51 MIME decoding broken on Win NT Matt Armstrong 1998-11-23 21:03 ` Shenghuo ZHU @ 1998-11-24 8:50 ` Shenghuo ZHU 1998-11-24 19:13 ` Matt Armstrong 1 sibling, 1 reply; 7+ messages in thread From: Shenghuo ZHU @ 1998-11-24 8:50 UTC (permalink / raw) >>>>> "Matt" == Matt Armstrong <matta@geoworks.com> writes: Matt> MIME decoding is broken again under Win NT (it got fixed somewhere Matt> around 0.35, but broken somewhere since then). Under Win NT, Matt> default-buffer-file-coding-system is undecided-dos, not Matt> undecided-unix. There are places in the MIME handling within pgnus Matt> where the default buffer-file-coding-system is used, so cr/lf Matt> translation happens on binary stuff. Matt> I sent myself a binary attachment consisting of two bytes: "\r\n". Matt> Getting that to decode correctly (with the standard "1 b" key Matt> sequence) involved this patch: Matt> *** mm-decode.el.orig Mon Nov 23 11:52:04 1998 Matt> --- mm-decode.el Mon Nov 23 12:22:18 1998 Matt> *************** Matt> *** 447,453 **** Matt> (when (or (not (file-exists-p file)) Matt> (yes-or-no-p (format "File %s already exists; overwrite? " Matt> file))) Matt> ! (write-region (point-min) (point-max) file))))) Matt> (defun mm-pipe-part (handle) Matt> "Pipe HANDLE to a process." Matt> --- 447,458 ---- Matt> (when (or (not (file-exists-p file)) Matt> (yes-or-no-p (format "File %s already exists; overwrite? " Matt> file))) Matt> ! (let ((coding-system-for-write Matt> ! (if (equal "text" (car (split-string Matt> ! (car (mm-handle-type handle)) "/"))) Matt> ! 'buffer-file-coding-system Matt> ! 'binary))) Matt> ! (write-region (point-min) (point-max) file)))))) Matt> (defun mm-pipe-part (handle) These codes are in (mm-with-unibyte-buffer ...), in which buffer-file-coding-system is supposed to be binary. But in mm-with-unibyte-buffer, buffer-file-coding-system is set to nil, which is not equivalent to binary, though it works good in Unix. mm-with-binary-buffer seems to be a better name than mm-with-unibyte-buffer. Other modifications are replacing no-conversion with binary, since `no-conversion' is defined differently in GNU Emacs and XEmacs. NT Emacs user, please test the patch to save and view images. -- Shenghuo :- cut --------------------------------------------------------- --- ChangeLog 1998/11/24 07:57:08 1.3 +++ ChangeLog 1998/11/24 08:25:07 @@ -1,3 +1,11 @@ +Tue Nov 24 03:01:48 1998 Shenghuo ZHU <zsh@cs.rochester.edu> + + * mm-decode.el (mm-display-external): Use binary instead of + no-conversion. + * gnus-agent.el (gnus-agent-file-coding-system): Ditto. + * nnheader.el (nnheader-file-coding-system): Ditto. + * mm-util.el (mm-with-unibyte-buffer): Use binary instead of nil. + Mon Nov 23 01:51:57 1998 Shenghuo ZHU <zsh@cs.rochester.edu> * gnus-sum.el (gnus-newsgroup-setup-default-charset): Use group --- mm-util.el 1998/11/23 05:51:21 1.1 +++ mm-util.el 1998/11/24 07:58:43 @@ -220,7 +220,7 @@ (get-buffer-create (generate-new-buffer-name " *temp*"))) (unwind-protect (with-current-buffer ,temp-buffer - (let (buffer-file-coding-system) + (let ((buffer-file-coding-system 'binary)) ,@forms)) (and (buffer-name ,temp-buffer) (kill-buffer ,temp-buffer)))) --- nnheader.el 1998/11/23 05:51:23 1.1 +++ nnheader.el 1998/11/24 08:24:35 @@ -754,7 +754,7 @@ (when (string-match (car ange-ftp-path-format) path) (ange-ftp-re-read-dir path))))) -(defvar nnheader-file-coding-system 'no-conversion +(defvar nnheader-file-coding-system 'binary "Coding system used in file backends of Gnus.") (defun nnheader-insert-file-contents (filename &optional visit beg end replace) --- mm-decode.el 1998/11/23 05:51:21 1.1 +++ mm-decode.el 1998/11/24 08:07:30 @@ -237,7 +237,7 @@ (select-window win))) (switch-to-buffer (generate-new-buffer "*mm*"))) (buffer-disable-undo) - (mm-set-buffer-file-coding-system 'no-conversion) + (mm-set-buffer-file-coding-system 'binary) (insert-buffer-substring cur) (message "Viewing with %s" method) (let ((mm (current-buffer))) @@ -261,7 +261,7 @@ dir)) (setq file (make-temp-name (expand-file-name "mm." dir)))) (write-region (point-min) (point-max) - file nil 'nomesg nil 'no-conversion) + file nil 'nomesg nil 'binary) (message "Viewing with %s" method) (unwind-protect (setq process --- gnus-agent.el 1998/11/23 05:51:10 1.1 +++ gnus-agent.el 1998/11/24 08:26:21 @@ -92,7 +92,7 @@ (defvar gnus-agent-spam-hashtb nil) (defvar gnus-agent-file-name nil) (defvar gnus-agent-send-mail-function nil) -(defvar gnus-agent-file-coding-system 'no-conversion) +(defvar gnus-agent-file-coding-system 'binary) (defconst gnus-agent-scoreable-headers (list ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: MIME decoding broken on Win NT 1998-11-24 8:50 ` Shenghuo ZHU @ 1998-11-24 19:13 ` Matt Armstrong 1998-11-24 19:31 ` Shenghuo ZHU 0 siblings, 1 reply; 7+ messages in thread From: Matt Armstrong @ 1998-11-24 19:13 UTC (permalink / raw) Cc: ding Shenghuo ZHU <zsh@cs.rochester.edu> writes: > + * mm-util.el (mm-with-unibyte-buffer): Use binary instead of nil. This has fixed the problem. Exported binary files are no longer corrupt under WinNT. Thanks! > mm-with-binary-buffer seems to be a better name than > mm-with-unibyte-buffer. I thought the same. In fact, I didn't make the change you made above because I thought "unibyte" meant something special and not just binary. -- matta ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: MIME decoding broken on Win NT 1998-11-24 19:13 ` Matt Armstrong @ 1998-11-24 19:31 ` Shenghuo ZHU 1998-11-24 20:19 ` Lars Magne Ingebrigtsen 0 siblings, 1 reply; 7+ messages in thread From: Shenghuo ZHU @ 1998-11-24 19:31 UTC (permalink / raw) >>>>> "Matt" == Matt Armstrong <matta@geoworks.com> writes: Matt> Shenghuo ZHU <zsh@cs.rochester.edu> writes: >> + * mm-util.el (mm-with-unibyte-buffer): Use binary instead of nil. Matt> This has fixed the problem. Exported binary files are no longer Matt> corrupt under WinNT. Thanks! This make situation more complicated. Kai Grossjohann reported that it did not work in Gnu Emacs, at least some ugly message displayed. What happens in XEmacs? >> mm-with-binary-buffer seems to be a better name than >> mm-with-unibyte-buffer. Matt> I thought the same. In fact, I didn't make the change you made Matt> above because I thought "unibyte" meant something special and Matt> not just binary. Lars, any comments? -- Shenghuo ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: MIME decoding broken on Win NT 1998-11-24 19:31 ` Shenghuo ZHU @ 1998-11-24 20:19 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 7+ messages in thread From: Lars Magne Ingebrigtsen @ 1998-11-24 20:19 UTC (permalink / raw) Shenghuo ZHU <zsh@cs.rochester.edu> writes: > Matt> I thought the same. In fact, I didn't make the change you made > Matt> above because I thought "unibyte" meant something special and > Matt> not just binary. > > Lars, any comments? The important thing about the macro is that it executes in a unibyte buffer; the actual coding system is less important. (If it isn't a unibyte buffer, the Emacs base64 code does not do what one would think it does.) So I think the name is ok as it is now. -- (domestic pets only, the antidote for overdose, milk.) larsi@gnus.org * Lars Magne Ingebrigtsen ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~1998-11-24 20:19 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 1998-11-23 20:51 MIME decoding broken on Win NT Matt Armstrong 1998-11-23 21:03 ` Shenghuo ZHU 1998-11-24 10:15 ` Lars Magne Ingebrigtsen 1998-11-24 8:50 ` Shenghuo ZHU 1998-11-24 19:13 ` Matt Armstrong 1998-11-24 19:31 ` Shenghuo ZHU 1998-11-24 20:19 ` Lars Magne Ingebrigtsen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).