On Thu, Aug 07, 2008 at 04:46:37PM +0200, Gabor Kovesdan wrote: > Hello, > > I'm wondering why fgetc() returns 0xff if called with /dev/null: > > #include <stdio.h> > #include <stdlib.h> > > int > main(void) > { > int c; > FILE *f; > > f = fopen("/dev/null", "r"); > > if (c != EOF) > printf("%c\n", fgetc(f)); > } > > > gcc foo.c > > ./a.out > ΓΏ > > This causes a bug in BSD grep as /dev/null is not distinguished from > ordinary files in the code, thus I was expecting it just returned EOF, > but in reality this is not the case. How such cases should be handled?
Your code is wrong -- you're not calling feof(). Please read the RETURN VALUES section of fgetc(3) in full, and slowly. :-) And your if() statement serves no purpose there. -- | Jeremy Chadwick jdc at parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB | _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"