emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Incomplete output from "cvs annotate"


From: Simon Josefsson
Subject: Re: Incomplete output from "cvs annotate"
Date: Mon, 19 Jan 2004 15:59:45 +0100
User-agent: Gnus/5.110002 (No Gnus v0.2) Emacs/21.3.50 (gnu/linux)

Andreas Schwab <address@hidden> writes:

>>         Why is the pipe opened by call-process -- and which cvs (as
>>         well as my wrapper around cvs) writes to -- in non-blocking
>>         state?
>
> See <http://mail.gnu.org/archive/html/bug-cvs/2002-07/msg00423.html>.  The
> problem is that ssh makes stderr non-blocking and Emacs connects stdout
> and stderr together, so that stdout becomes non-blocking as well.
> Workaround is to separate stdout and stderr again, eg. by using this
> script as CVS_RSH:
>
> #!/bin/bash
> exec 2> >(exec cat >&2 2>/dev/null)
> exec ssh "$@"

This workaround isn't a good solution.  Why do Emacs connect stdout
and stderr together?  IMHO, it shouldn't.  If the data need to be
collapsed into the same buffer, it should happen inside Emacs, not by
cloning the fd.  So using a BUFFER cons cell in VC for call-process
isn't a solution, using just one BUFFER should work.

My experience with this bug is that 'C-x v u' leads to corrupt files,
so I've more or less stopped using that command, and do 'rm FILE'
followed by 'cvs upd FILE' in a M-x shell instead.  It is not easily
reproducible, so I haven't reported it, but this discussion reminded
me.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]