This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

misbehavior of ftell on stdin?


Hello

I run cygwin on Windows XP through rxvt. When I compile and run the
following code:

#include <stdio.h>

main()
{
  printf("isatty=%d\n",isatty(fileno(stdin)));
  char *s=(char *)malloc(1024+1);
  char *s2=(char *)malloc(1024+1);

  fgets(s,1024,stdin);
  free(s);
  printf("stdio = %ld\n", ftell(stdin));

  fgets(s2,1024,stdin);
  free(s2);
  printf("stdio = %ld\n", ftell(stdin));

}

I input "abcdefg" followed by a nl and then "abcdefg" followed by a nl.

$ gcc test1.c

bash ~
$ ./a 
isatty=1
abcdefg
stdio = 0
abcdefg
stdio = 8

As you see, the first ftell's result is wrong. The first fgets is ignored.

Interestingly, when I run cygwin without rxvt(just running bash.exe
from the dos command line) with CYGWIN=notty, the ftell always returns
-1. If CYGWIN=tty, then ftell behaves as in rxvt ; it returns 0 first
and then behaves correct.

Am I missing something?

--
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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]