unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* ediff-files uses wrong coding system for temporary file
@ 2007-08-15 13:10 Joe Wells
  2007-09-25 23:27 ` Joe Wells
  0 siblings, 1 reply; 3+ messages in thread
From: Joe Wells @ 2007-08-15 13:10 UTC (permalink / raw)
  To: bug-gnu-emacs

To reproduce:

1. Pick a UTF-8-encoded file with lots of non-ASCII characters.  (For
   example, you can pick “latin-ltx.el” from the Emacs distribution.)
   Assume for the sake of discussion that this file is named “X”.

   This file should be uncompressed.  (If it is compressed, adjust the
   following instructions to make an _uncompressed_ copy of it.)

2. Copy this file to a fresh name:

     cp X /tmp/Y

3. Compress the copy:

     gzip /tmp/Y

4. Start a fresh Emacs:

     emacs -Q

5. Use ediff-files on the original file and its compressed copy:

     M-x ediff-files RET X RET /tmp/Y RET

6. Observe many differences reported, despite the fact that the files
   should be considered identical.

The cause of the problem is that Ediff uses ediff-make-temp-file to
make a temporary uncompressed version of the compressed file to use as
input to “diff”.  It uses the value of ediff-coding-system-for-write
for the coding system when writing this temporary file.  The value of
ediff-coding-system-for-write at this point in time differs from the
coding system of the original file.  It should probably instead use
the coding system of the compressed file.

I hope this report is helpful.

Joe

======================================================================
In GNU Emacs 22.1.1 (i686-pc-linux-gnu, GTK+ Version 2.8.20)
 of 2007-06-27 on artemis
Windowing system distributor `The X.Org Foundation', version 11.0.70000000
configured using `configure  '--prefix=/home/jbw/local2' '--enable-debug' '--disable-nls' '--with-x-toolkit=gtk' 'CFLAGS=-O0 -g3 -ggdb''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: en_US.UTF-8
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: jbw
  value of $LANG: nil
  locale-coding-system: utf-8
  default-enable-multibyte-characters: t

Minor modes in effect:
  shell-dirtrack-mode: t
  outline-minor-mode: t
  desktop-save-mode: t
  url-handler-mode: t
  partial-completion-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  unify-8859-on-encoding-mode: t
  utf-translate-cjk-mode: t
  auto-compression-mode: t
  temp-buffer-resize-mode: t
  size-indication-mode: t
  line-number-mode: t
  transient-mark-mode: t

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: ediff-files uses wrong coding system for temporary file
  2007-08-15 13:10 ediff-files uses wrong coding system for temporary file Joe Wells
@ 2007-09-25 23:27 ` Joe Wells
  2007-09-26 23:58   ` Glenn Morris
  0 siblings, 1 reply; 3+ messages in thread
From: Joe Wells @ 2007-09-25 23:27 UTC (permalink / raw)
  To: bug-gnu-emacs

Has anyone else been able to reproduce this bug?

Joe

Joe Wells <jbw@macs.hw.ac.uk> writes:

> To reproduce:
>
> 1. Pick a UTF-8-encoded file with lots of non-ASCII characters.  (For
>    example, you can pick “latin-ltx.el” from the Emacs distribution.)
>    Assume for the sake of discussion that this file is named “X”.
>
>    This file should be uncompressed.  (If it is compressed, adjust the
>    following instructions to make an _uncompressed_ copy of it.)
>
> 2. Copy this file to a fresh name:
>
>      cp X /tmp/Y
>
> 3. Compress the copy:
>
>      gzip /tmp/Y
>
> 4. Start a fresh Emacs:
>
>      emacs -Q
>
> 5. Use ediff-files on the original file and its compressed copy:
>
>      M-x ediff-files RET X RET /tmp/Y RET
>
> 6. Observe many differences reported, despite the fact that the files
>    should be considered identical.
>
> The cause of the problem is that Ediff uses ediff-make-temp-file to
> make a temporary uncompressed version of the compressed file to use as
> input to “diff”.  It uses the value of ediff-coding-system-for-write
> for the coding system when writing this temporary file.  The value of
> ediff-coding-system-for-write at this point in time differs from the
> coding system of the original file.  It should probably instead use
> the coding system of the compressed file.
>
> I hope this report is helpful.
>
> Joe
>
> ======================================================================
> In GNU Emacs 22.1.1 (i686-pc-linux-gnu, GTK+ Version 2.8.20)
>  of 2007-06-27 on artemis
> Windowing system distributor `The X.Org Foundation', version 11.0.70000000
> configured using `configure  '--prefix=/home/jbw/local2' '--enable-debug' '--disable-nls' '--with-x-toolkit=gtk' 'CFLAGS=-O0 -g3 -ggdb''
>
> Important settings:
>   value of $LC_ALL: nil
>   value of $LC_COLLATE: nil
>   value of $LC_CTYPE: en_US.UTF-8
>   value of $LC_MESSAGES: nil
>   value of $LC_MONETARY: nil
>   value of $LC_NUMERIC: nil
>   value of $LC_TIME: jbw
>   value of $LANG: nil
>   locale-coding-system: utf-8
>   default-enable-multibyte-characters: t
>
> Minor modes in effect:
>   shell-dirtrack-mode: t
>   outline-minor-mode: t
>   desktop-save-mode: t
>   url-handler-mode: t
>   partial-completion-mode: t
>   tooltip-mode: t
>   mouse-wheel-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   unify-8859-on-encoding-mode: t
>   utf-translate-cjk-mode: t
>   auto-compression-mode: t
>   temp-buffer-resize-mode: t
>   size-indication-mode: t
>   line-number-mode: t
>   transient-mark-mode: t




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: ediff-files uses wrong coding system for temporary file
  2007-09-25 23:27 ` Joe Wells
@ 2007-09-26 23:58   ` Glenn Morris
  0 siblings, 0 replies; 3+ messages in thread
From: Glenn Morris @ 2007-09-26 23:58 UTC (permalink / raw)
  To: Joe Wells; +Cc: bug-gnu-emacs

Joe Wells wrote:

> Has anyone else been able to reproduce this bug?

It looks like this has been fixed:

2007-08-19  Michael Kifer  <kifer@cs.stonybrook.edu>
[...]
    * ediff-util.el (ediff-make-temp-file): Use the coding system of the
      buffer for which file is created.

>> The cause of the problem is that Ediff uses ediff-make-temp-file to
>> make a temporary uncompressed version of the compressed file to use as
>> input to “diff”.  It uses the value of ediff-coding-system-for-write
>> for the coding system when writing this temporary file.  The value of
>> ediff-coding-system-for-write at this point in time differs from the
>> coding system of the original file.  It should probably instead use
>> the coding system of the compressed file.




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-09-26 23:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-15 13:10 ediff-files uses wrong coding system for temporary file Joe Wells
2007-09-25 23:27 ` Joe Wells
2007-09-26 23:58   ` Glenn Morris

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).