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>