From: keane AT jei DOT umd DOT edu (Christopher Keane) Newsgroups: comp.os.msdos.djgpp Subject: fseek() bug?!?! Date: 19 Mar 1997 21:25:29 GMT Organization: University of Maryland, College Park Lines: 59 Message-ID: <5gplk9$fpn@hecate.umd.edu> NNTP-Posting-Host: jei.umd.edu To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Hi all, I've run into a strange problem which appears to be in fseek(). I have some code which has worked fine both under BC and Watcom 9.5, but doesn't in DJGPP 2.01. Perhaps someone can tell me if I am making a bad assumption... The code: FILE *fin; ... while( ! feof(fin) ) { ... if( ... ) { fread(.....) ... } else { fseek(....) } } Obviously if the file fseeks past EOF, the program should dump out of the while. It does this correctly when the fread hits the EOF.... However, it goes on for ever if it fseeks past the EOF. So, I checked feof(fin) before and after the fseek.... On EOF, feof() before the fseek returns 64, so I know its past the end of the file. However, when I do a feof(fin) after the fseek() knowing full well that it is EOF, it returns 0! It appears that fseek resets the error condition on EOF, causing this loop to fail. I solved this with checking the feof() before the fseek() and breaking, but I don't understand why this should fail. Anyone? -- Cheers, ------------------------------------------------------------------------------ Christopher M. Keane keane AT jei DOT umd DOT edu Joint Education Initiative keane AT glue DOT umd DOT edu Department of Geology University of Maryland at College Park