From: Zac Medico Date: Tue, 20 Nov 2007 20:05:12 +0000 (-0000) Subject: Bug #198491 - Disable termios.OPOST post-processing of output on X-Git-Tag: v2.1.4~273 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3f07d0d007a7c00362261495724f599a8f5991e8;p=portage.git Bug #198491 - Disable termios.OPOST post-processing of output on the slave pty file descriptor since otherwise weird things like \n -> \r\n transformations may occur. Thanks to Ulrich Mueller for this patch. (trunk r8473) svn path=/main/branches/2.1.2/; revision=8550 --- diff --git a/pym/portage.py b/pym/portage.py index 254ae0b1a..e25c85678 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -2567,6 +2567,13 @@ def spawn(mystring, mysettings, debug=0, free=0, droppriv=0, sesandbox=0, fakero writemsg("openpty failed: '%s'\n" % str(e), noiselevel=1) del e master_fd, slave_fd = os.pipe() + if got_pty: + # Disable post-processing of output since otherwise weird + # things like \n -> \r\n transformations may occur. + import termios + mode = termios.tcgetattr(slave_fd) + mode[1] &= ~termios.OPOST + termios.tcsetattr(slave_fd, termios.TCSANOW, mode) # We must set non-blocking mode before we close the slave_fd # since otherwise the fcntl call can fail on FreeBSD (the child