Mail Archives: djgpp/1997/10/14/22:20:45
The Problem:
When you write to DOS's CON driver, it stops writing when it encounters an
EOF character (ASCII 0x1A, ^Z).
The Effect:
If you use `grep' on a binary file (or on `*' when there are binary files in
the directory), and it finds a matching "line" which contains a ^Z, it will
give a misleading error message about ENOSPC because the count was short. It
will also only print the first part of the "line", before the ^Z. This will
not occur if you redirect stdout, for obvious reasons.
More Details:
Actually what happens is that when _write() detects a short count being
written, it sets errno to ENOSPC. fwrite(), which `grep' uses, notices this
and sets the `error' flag on the stream. When `grep' calls ferror(), it
finds out about this and prints the error message.
I realize this is DOS's fault and not DJGPP's, and no workarounds come
immediately to mind. I'm also not too concerned about getting it fixed,
since it's only cosmetic, and `grep'ing binary files to the console isn't
very meaningful anyway. But I thought I'd throw it out there.
Nate Eldredge
eldredge AT ap DOT net
- Raw text -