Date: Mon, 18 Jan 2016 20:47:04 +0000 (UTC) From: Baptiste Daroussin <bapt@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r294293 - head/usr.bin/finger Message-ID: <201601182047.u0IKl4Qi098515@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bapt Date: Mon Jan 18 20:47:04 2016 New Revision: 294293 URL: https://svnweb.freebsd.org/changeset/base/294293 Log: Fix printing multibyte printing when performing a networked finger(1) request MFC after: 1 week Modified: head/usr.bin/finger/net.c Modified: head/usr.bin/finger/net.c ============================================================================== --- head/usr.bin/finger/net.c Mon Jan 18 20:44:29 2016 (r294292) +++ head/usr.bin/finger/net.c Mon Jan 18 20:47:04 2016 (r294293) @@ -42,7 +42,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/socket.h> #include <sys/uio.h> -#include <ctype.h> +#include <wctype.h> #include <db.h> #include <err.h> #include <netdb.h> @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include <string.h> #include <unistd.h> #include <utmpx.h> +#include <wchar.h> #include "finger.h" static void cleanup(int sig); @@ -108,7 +109,7 @@ do_protocol(const char *name, const stru { int cnt, line_len, s; FILE *fp; - int c, lastc; + wint_t c, lastc; struct iovec iov[3]; struct msghdr msg; static char slash_w[] = "/W "; @@ -168,7 +169,7 @@ do_protocol(const char *name, const stru if ((fp = fdopen(s, "r")) != NULL) { cnt = 0; line_len = 0; - while ((c = getc(fp)) != EOF) { + while ((c = getwc(fp)) != EOF) { if (++cnt > OUTPUT_MAX) { printf("\n\n Output truncated at %d bytes...\n", cnt - 1); @@ -180,7 +181,7 @@ do_protocol(const char *name, const stru c = '\n'; lastc = '\r'; } else { - if (!isprint(c) && !isspace(c)) { + if (!iswprint(c) && !iswspace(c)) { c &= 0x7f; c |= 0x40; } @@ -191,7 +192,7 @@ do_protocol(const char *name, const stru continue; } } - putchar(c); + putwchar(c); if (c != '\n' && ++line_len > _POSIX2_LINE_MAX) { putchar('\\'); putchar('\n'); @@ -206,7 +207,7 @@ do_protocol(const char *name, const stru */ warn("reading from network"); } - if (lastc != '\n') + if (lastc != L'\n') putchar('\n'); fclose(fp);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201601182047.u0IKl4Qi098515>