This is the mail archive of the cygwin@sourceware.cygnus.com
mailing list for the Cygwin project. See the Cygwin
home page for more information.
[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]
Cygwin B20 - fseek under gcc fails to reposition on text files
- To: cygwin@sourceware.cygnus.com
- Subject: Cygwin B20 - fseek under gcc fails to reposition on text files
- From: Peter Kabal <kabal@ECE.McGill.CA>
- Date: Tue, 16 Feb 1999 07:25:36 -0500
- Delivered-To: listarch-cygwin@sourceware.cygnus.com
- Delivered-To: mailing list cygwin@sourceware.cygnus.com
- Importance: Normal
- Mailing-List: contact cygwin-help@sourceware.cygnus.com; run by ezmlm
- Reply-to: kabal@ECE.McGill.CA
- Sender: cygwin-owner@sourceware.cygnus.com
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