Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Aug 2008 12:21:56 GMT
From:      Gabor Kovesdan <gabor@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 146981 for review
Message-ID:  <200808091221.m79CLuN8068125@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=146981

Change 146981 by gabor@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. */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200808091221.m79CLuN8068125>