On 05/10/2009 13:47, Corinna Vinschen wrote:
And here's the problem. Cygwin doesn't have TIOCSCTTY, and the only way to make a terminal a controlling tty in Cygwin is to call open() on it, which tcsh misses to do. Bash, however, calls open("/dev/tty", O_RDWR), so bash doesn't have this problem.
Out of curiosity, what about implementing TIOCSCTTY?
Unfortunately, luit has no alternative way to make the new tty the controlling tty. What we need is a patch like this in luit: --- sys.c.ORIG 2009-10-05 19:23:58.000000000 +0200 +++ sys.c 2009-10-05 19:18:34.000000000 +0200 @@ -408,7 +408,11 @@ openTty(char *line) int rc; int tty = -1; +#ifdef __CYGWIN__ + tty = open(line, O_RDWR); +#else tty = open(line, O_RDWR | O_NOCTTY); +#endif
For portability, perhaps this should also be #ifdef TIOCSCTTY, if these two sections go hand-in-hand?
This works fine for me with tcsh now as well. This patch is really important, since not only tcsh is affected by this. If you call, for instance, `xterm -e /bin/vim', vim works, but it has no controlling tty either, as easily visible in `ps -e' output. So a patch to tcsh would only fix this for tcsh, but not for any other application. As for the Cygwin bug, it has to do with the return value of tcgetpgrp, which appears to be incorrect in a couple of situations. I'm not quite sure how to explain this, yet, nor if I really understood it. I'll follow up on this later this week on the cygwin-developers list. Yaakov, could you please generate a new luit package with the above patch?
Sure.
P.S: I had to build luit manually for testing. Building with cyport failed: configure.ac:30: error: must install xorg-macros 1.3 or later before running autoconf/autogen
xorg-util-macros 1.3 is part of the upcoming X11R7.5, which I planned to release in one upload once all the components are available, built, and tested. The luit update was also slated to be part of that, but I moved it ahead to fix the previous bug reports.
Yaakov Cygwin/X -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://x.cygwin.com/docs/ FAQ: http://x.cygwin.com/docs/faq/