PERFORCE change 145597 for review

Gabor Kovesdan gabor at FreeBSD.org
Tue Jul 22 10:33:36 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=145597

Change 145597 by gabor at gabor_server on 2008/07/22 10:32:47

	- Partly fix the wchar vs binary file case

Affected files ...

.. //depot/projects/soc2008/gabor_textproc/grep/file.c#18 edit

Differences ...

==== //depot/projects/soc2008/gabor_textproc/grep/file.c#18 (text+ko) ====

@@ -100,13 +100,15 @@
 char *
 grep_fgetln(struct file *f, size_t *len)
 {
-	int	 i;
-	char	 ch;
-	size_t	 size;
-	wchar_t	 wbinbuf[BUFSIZ];
+	int		 i;
+	char		 ch;
+	size_t		 size;
+	wchar_t		 wbinbuf[BUFSIZ];
+	const char	*src = binbuf;
+	mbstate_t	 mbs;
 
 	if ((binbufptr == NULL) && (binbehave != BINFILE_TEXT)) {
-		for (i = 0; i < (BUFSIZ * 4); i++) {
+		for (i = 0; i < (BUFSIZ * sizeof(wint_t)); i++) {
 			if (grep_feof(f))
 				break;
 			ch = grep_fgetc(f);
@@ -114,13 +116,14 @@
 		}
 		binbufsiz = i;
 		binbufptr = binbuf;
-//		size = mbsnrtowcs(wbinbuf, &binbuf, BUFSIZ * 4, BUFSIZ - 1, NULL);
+
+		size = mbsnrtowcs(wbinbuf, &src, BUFSIZ * sizeof(wint_t), BUFSIZ - 1, &mbs);
 		f->binary = 0;
-//		for (; size > 0; size--)
-//			if (iswbinary(wbinbuf[size])) {
-//				f->binary = 1;
-//				break;
-//			}
+		for (; size > 0; size--)
+			if (iswbinary(wbinbuf[size])) {
+				f->binary = 1;
+				break;
+			}
 	}
 
 	for (i = 0; ; i++) {


More information about the p4-projects mailing list