GNU bug report logs -
#1523
[Ivan Shmakov] process-send-string apparently mangles \r into \n
Previous Next
Reported by: Sven Joachim <svenjoac <at> gmx.de>
Date: Tue, 9 Dec 2008 21:20:03 UTC
Severity: normal
Tags: confirmed, notabug, patch
Done: Lars Magne Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Sven Joachim wrote:
> I received the following report via the Debian bug tracking system.
> It is reproducible in the trunk.
>
>
>
> ------------------------------------------------------------------------
>
> Subject:
> Bug#508300: process-send-string apparently mangles \r into \n
> From:
> Ivan Shmakov <oneingray <at> gmail.com>
> Date:
> Wed, 10 Dec 2008 01:14:09 +0600
> To:
> submit <at> bugs.debian.org
>
> To:
> submit <at> bugs.debian.org
> CC:
> Ivan Shmakov <oneingray <at> gmail.com>
>
>
> Package: emacs22
> Version: 22.2+2-5
>
> After running the following program:
>
> (let* ((coding-system-for-read 'binary)
> (coding-system-for-write 'binary)
> (p (start-process "foo" "*foo*" "od" "-td1")))
> (process-send-string p "\r\n")
> (process-send-eof p))
> ;; => #<process foo>
>
> the `*foo*' buffer contains:
>
> --cut: *foo*--
> 0000000 10 10
> 0000002
>
> Process foo finished
> --cut: *foo*--
>
> While I'd expect the following instead:
>
> --cut: *foo*--
> 0000000 13 10
> 0000002
>
> Process foo finished
> --cut: *foo*--
>
> Compare:
>
> (let ((coding-system-for-read 'binary)
> (coding-system-for-write 'binary))
> (save-excursion
> (set-buffer "*foo*")
> (let* ((start (point))
> (end (progn (insert "\r\n") (point))))
> (call-process-region start end "od" t t t "-td1"))))
>
> --cut: *foo*--
> 0000000 13 10
> 0000002
> --cut: *foo*--
>
>
>
(start-process "foo" "*foo*" "od" "-td1") // pty is used,
pty driver will map '\r' <-> '\n'
(call-process-region start end "od" t t t "-td1") // temp file is
used, no such problem
--- process.c.~1.577.~ 2009-01-03 07:03:59.000000000
-0800
+++ process.c 2009-01-13 01:18:08.000000000
-0800
@@ -1871,6 +1871,13 @@
forkin = forkout =
-1;
#endif /* not USG, or USG_SUBTTY_WORKS
*/
pty_flag =
1;
+
{
+ struct emacs_tty
settings;
+ EMACS_GET_TTY(outchannel,
&settings);
+ settings.main.c_iflag &= ~ICRNL; /* Disable map of CR to
NL on input */
+ settings.main.c_iflag &= ~INLCR; /* Disable map of NL to
CR on input */
+ EMACS_SET_TTY(outchannel, &settings,
1);
+
}
}
else
#endif /* HAVE_PTYS */
This bug report was last modified 13 years and 319 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.