Subject: Re: isatty bug
From: Sam Steingold <[email-masked]>
To: [email-masked]
Date: 16 Sep 2003 14:16:05 -0400

> * Igor Pechtchanski <[email-masked]> [2003-09-16 13:36:30 -0400]:
>
> > > >int main (void) {
> > > >#define Y_N(x)  ((x) ? "(TTY)" : "(not a TTY)")
> > > >  printf("0: %s %s\n1: %s %s\n2: %s %s\n",
> > > >         ttyname(0),Y_N(isatty(0)),ttyname(1),Y_N(isatty(1)),
> > > >         ttyname(2),Y_N(isatty(2)))
>                                         ^
> > > >#undef Y_N
> > > >  return 0;
> > > >}
> > >
> > > Fixing the obvious typo in the above provides the desired results both
> > > inside gdb and outside gdb.  With CYGWIN=tty and with CYGWIN=notty.
> >
> > what is the "obvious typo"?
>
> Aw, come on, try to at least *compile* the code you posted, will ya? ;-)

looks like my cut-and-paste is not as good as it was ... :-)

OK.

what about this:

int same_tty_p (int fd1, int fd2)
{
  struct stat stat1;
  struct stat stat2;
  return ((fstat(fd1,&stat1) >= 0) && (fstat(fd2,&stat2) >= 0) &&
          (stat1.st_dev == stat2.st_dev) && (stat2.st_ino == stat2.st_ino));
}

  printf("0/1: %d\n1/2: %d\n2/0: %d\n",same_tty_p(0,1),
         same_tty_p(1,2),same_tty_p(2,0));

I get crash both in program and gdb (i.e., gdb itself segfaults) on the
fstat() calls.

ps. I am missing "man fstat" - what package do I need for that?

--
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
The only time you have too much fuel is when you're on fire.

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