PERFORCE change 146981 for review
Gabor Kovesdan
gabor at FreeBSD.org
Sat Aug 9 12:21:57 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=146981
Change 146981 by gabor at gabor_server on 2008/08/09 12:21:09
- Improve binary file detecting and simplify the code
Affected files ...
.. //depot/projects/soc2008/gabor_textproc/grep/file.c#31 edit
Differences ...
==== //depot/projects/soc2008/gabor_textproc/grep/file.c#31 (text+ko) ====
@@ -119,39 +119,23 @@
{
int i = 0;
char ch;
- size_t size;
- wchar_t wbinbuf[BUFSIZ];
- const char *src = binbuf;
- mbstate_t mbs;
/* Fill in the buffer if it is empty. */
if (binbufptr == NULL) {
/* Only pre-read to the buffer if we need the binary check. */
if (binbehave != BINFILE_TEXT) {
- for (; i < sizeof(wbinbuf) && !grep_feof(f); i++) {
+ for (; i < sizeof(binbuf) && !grep_feof(f); i++) {
ch = grep_fgetc(f);
+ if ((unsigned char)ch == 0)
+ f->binary = 1;
if (ch != EOF)
binbuf[i] = ch;
else
break;
}
- binbufsiz = i;
- binbufptr = binbuf;
-
- /* Convert at most (BUFSIZ * sizeof(wint_t)) characters or
- (BUFSIZ - 1) bytes to wide character string. */
- size = mbsnrtowcs(wbinbuf, &src, sizeof(wbinbuf), BUFSIZ - 1, &mbs);
- f->binary = 0;
- for (; size > 0; size--)
- if (iswbinary(wbinbuf[size])) {
- f->binary = 1;
- break;
- }
-
- } else {
- binbufsiz = i;
- binbufptr = binbuf;
}
+ binbufsiz = i;
+ binbufptr = binbuf;
}
/* Read a line whether from the buffer or from the file itself. */
More information about the p4-projects
mailing list