Cygwin B20 - fseek under gcc fails to reposition on text files

Peter Kabal kabal@ECE.McGill.CA
Tue Feb 16 04:24:00 GMT 1999


Consider a text file (CR/LF line endings). Read a line, save the
current position, seek to end-of-file, seek to the saved position,
read a line. The second read does not return the second line of
the file.
A shell script which tests the problem is included below:
---------------------------------------------------------------------
#!/bin/sh
#
# Test fseek bug
# On Cygwin 20.1, a file is not correctly repositioned after seeking to the
# end-of-file on a text file (CR/LF line endings).
cat > tfrepos.c << EoF
#include <stdio.h>
int main (int argc, char *argv[])
{
 FILE *fp;
 long int pos, size;
 char line[200];
 char *p;
 fp = fopen (argv[1], "r");
 p = fgets (line, 200, fp);
 printf (" Line: %s", p);
 pos = ftell (fp);
 fseek (fp, 0L, SEEK_END);
 fseek (fp, pos, SEEK_SET);
 p = fgets (line, 200, fp);
 printf (" Line: %s", p);
 return 0;
}
EoF
# Run the test program with the c-program as input
gcc tfrepos.c -o tfrepos
./tfrepos tfrepos.c
# Clean up
rm -f tfrepos tfrepos.c
---------------------------------------------------------------------
Peter Kabal kabal@ECE.McGill.CA
Dept. Electrical & Computer Eng.
McGill University 


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /