Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jul 2008 10:33:36 GMT
From:      Gabor Kovesdan <gabor@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 145597 for review
Message-ID:  <200807221033.m6MAXaTW014408@repoman.freebsd.org>

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

Change 145597 by gabor@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++) {



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