delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2013/07/13/21:36:40

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp AT delorie DOT com
Message-ID: <51E200D7.1050800@gmx.de>
Date: Sun, 14 Jul 2013 03:37:27 +0200
From: Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121025 Thunderbird/16.0.2
MIME-Version: 1.0
To: djgpp AT delorie DOT com
Subject: A question about the ferror behavior
X-Provags-ID: V03:K0:+kqXfyP+U2go716x6faZd46qU0EcU29vtLDQeoWbgSWRYjPo58U
cMDdoyfDuZcQZytENlgc1H7c5PPlRR6yL1+yZJ0iBSTT0VRw+osEV0gTHGcHg3v94cElk0n
9Y7hDqi288o823NFolo5mo6JqeLlOCdw3gzzHs7C8aRgSr4zXnMu6NVR/MHaDx/9ZrKERm5
ujBNFpjJyf311NiDObfnw==
Reply-To: djgpp AT delorie DOT com

Please inspect the code snippet below:

#include <stdio.h>

int main(void)
{
   char buffer[1024];
   FILE *f = fopen("foobar.txt", "w");

   clearerr(f);

   if (fgets(buffer, sizeof(buffer), f) == NULL)
     printf("EOF encountered before data\n");

   printf("ferror = %s\n", ferror(f) ? "TRUE" : "FALSE");
   printf("feof = %s\n", feof(f) ? "TRUE" : "FALSE");

   return 0;
}


If this code is compiled with djdev203 or djdev204 I get
the following output:

EOF encountered before data
ferror = FALSE
feof = FALSE


If I compile the code on linux I get the following
output:

EOF encountered before data
ferror = TRUE
feof = FALSE


With the write mode passed to fopen, the file is created
and truncated to zero length.  As it can be seen fgets
returns a NULL pointer because EOF is reached without
reading data from file.  Is the deference in behavior
compared with linux intentional or is it a bug?  I do not
have neither working installations of cygwin nor mingw nor
the time to check if this behavior is the same or
different there.
This behavior difference makes pass tests under linux
and makes fail the same tests under djgpp.

Some clarification would be appreciated if this is a bug
or a feature.


Regards,
Juan M. Guerrero

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019