[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [HELP] (bug?) Saving a buffer without any conversion?
From: |
Eli Zaretskii |
Subject: |
Re: [HELP] (bug?) Saving a buffer without any conversion? |
Date: |
Tue, 14 Jan 2003 08:06:02 +0200 (IST) |
On 14 Jan 2003, Kim F. Storm wrote:
> > We're receiving binary content via a network process. After the
> > transfer is complete, this buffer should be saved to a file.
> >
> > The effect I'm having is that we receive 1372422 bytes via the process
> > filter function STRING argument, and after insertion into a buffer,
> > we have a buffer with buffer-size 1372422, but after calling (save-buffer)
> > we get this:
> >
> > -rw-r--r-- 1 root root 1865264 Jan 13 18:35 blah28.mp3
> >
> > I'm using:
> >
> > (set-process-coding-system proc 'binary 'binary)
> > (set-buffer-file-coding-system 'no-conversion t)
> >
>
> I have looked at Mario's data before sending it to emacs and after
> emacs has written it to a file.
>
> It seems that every byte in the range 0xa0 .. 0xff that were in the
> original file is prefixed with an 0x81 byte in the file containing the
> received data. To me, that looks like the internal multi-byte
> representation for the binary data.
Yes. That's what no-conversion does: it prevents encoding of the
internal buffer's contents.
I suggest to use raw-text for both coding systems above, and see if that
helps.
An alternative approach is to (set-buffer-multibyte nil) before reading
the data into it and before saving it.
> The buffer's coding system for save is no-conversion. How did
> that internal data end up in the file?
Probably because the buffer was a multibyte buffer, in which case
no-conversion writes out the internal representation. That's why I
suggested using raw-text to save the buffer.
The reason you seem to see the right size is that Emacs tries very hard
to conceal the fact that some characters in the 128-255 code range are
stored in a multibyte buffer as multibyte sequences. Using no-conversion
to save such a buffer exposes the internal representation, so it is
exactly the thing _not_to_do_ in this case.
> What coding systems should be set on the network process and on the
> buffer to make it possible to have the received binary data in the
> buffer make its way unmangled into the file on the disk?
As I said above, two ways: either force the receiving buffer to be
unibyte, or use raw-text to save it. Both ways should have the same
effect; however, I'm personally biased towards not using unibyte buffers,
so my preference would be to try the raw-text approach first.
- [HELP] (bug?) Saving a buffer without any conversion?, Mario Lang, 2003/01/13
- Re: [HELP] (bug?) Saving a buffer without any conversion?, Kenichi Handa, 2003/01/14
- Re: [HELP] (bug?) Saving a buffer without any conversion?, Kim F. Storm, 2003/01/15
- Re: [HELP] (bug?) Saving a buffer without any conversion?, Kenichi Handa, 2003/01/15
- Re: [HELP] (bug?) Saving a buffer without any conversion?, Kim F. Storm, 2003/01/15
- Re: [HELP] (bug?) Saving a buffer without any conversion?, Eli Zaretskii, 2003/01/15
- Re: [HELP] (bug?) Saving a buffer without any conversion?, Kim F. Storm, 2003/01/16
- Re: [HELP] (bug?) Saving a buffer without any conversion?, Kenichi Handa, 2003/01/16