delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2010/07/15/10:39:50

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Date: Thu, 15 Jul 2010 10:39:36 -0400
From: Christopher Faylor <cgf-use-the-mailinglist-please AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: {lp,cb}Reserved2 under Windows 7 and file descriptors
Message-ID: <20100715143936.GA25506@ednor.casa.cgf.cx>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <000801cb2383$9c3ad3a0$d4b07ae0$@gmail.com> <20100714184922 DOT GA13548 AT ednor DOT casa DOT cgf DOT cx> <001001cb23a5$3a879090$af96b1b0$@gmail.com> <20100715081941 DOT GE6944 AT calimero DOT vinschen DOT de> <AANLkTil3FbLOY3T45_91RYarYTpRGu487WOqIBkcojuY AT mail DOT gmail DOT com>
MIME-Version: 1.0
In-Reply-To: <AANLkTil3FbLOY3T45_91RYarYTpRGu487WOqIBkcojuY@mail.gmail.com>
User-Agent: Mutt/1.5.20 (2009-06-14)
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Thu, Jul 15, 2010 at 12:25:09PM +0100, Andy Koppe wrote:
>On 15 July 2010 09:19, Corinna Vinschen wrote:
>>> Furthermore, there is a very long-standing issue with Cygwin pty devices:
>>> while Cygwin programs report true from isatty() when called on a Cygwin PTY,
>>> MSVCRT applications do *not*.
>>
>> Right.
>>
>>> [...]
>>> However, due to the way the CRT works, we can fool it into thinking a
>>> passed-in file descriptor is actually a tty. All you need to do is use 3 for
>>> the value of *lpReserved2, then follow it with three flag bytes, then three
>>> HANDLE values --- corresponding respectively to flags[fd0], flags[fd1],
>>> flags[fd2] and fh[0], fh[fd1] and fh[fd2]. ??This information would be
>>> followed by the normal child_info structure. If stdin, stdout, or stderr is
>>> a Cygwin PTY, Cygwin can manually set the FDEV bit (described in the old
>>> MSDOS headers) in corresponding flag byte, which will make _isatty() return
>>> true in the child.
>>>
>>> (Not that I've actually tried it --- it's just an idea.)
>>
>> That sounds like an interesting idea. ??I'll play around with it as soon
>> as I have a bit of spare time again. ??Unless, of course, nobody else
>> will try it or already did...
>
>It would be brilliant if this did work, taking at least some of the
>sting out of the whole pty vs interactive console app issue.

I actually have thought about doing this in the past but it always
seemed to me that lying to a program about the "ttyness" of a file
handle was going to cause more subtle problems than what we have
currently.

It also obviously isn't a panacea since not everything is going to use
msvcrt file handles.

If we really can create a standard file handle structure and not have to
tweak it for the next five years and if we only fill it out for
non-cygwin programs (which we do know when we're about to exec
something) maybe it will be worth it.  I think I'm going to need some
real convincing though.

Hmm.  I wonder if anything else does this.  Does MKS do something similar?

cgf

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019