Date: Mon, 02 Jul 2018 17:30:24 +0900 From: =?utf-8?B?5b6M6Jek5aSn5Zyw?= <daichigoto@icloud.com> To: Conrad Meyer <cem@freebsd.org> Cc: Daichi GOTO <daichi@freebsd.org>, src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r335836 - head/usr.bin/top Message-ID: <CC4D7694-D0E1-43A8-8B25-F0717D7AB734@icloud.com> In-Reply-To: <CAG6CVpXvic6y6VLEjBzxFtdQC=6b_%2BC2CmEvpMssgYEahAZhOQ@mail.gmail.com> References: <201807010532.w615W44e042172@repo.freebsd.org> <CAG6CVpXvic6y6VLEjBzxFtdQC=6b_%2BC2CmEvpMssgYEahAZhOQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> 2018/07/02 2:08=E3=80=81Conrad Meyer <cem@freebsd.org>=E3=81=AE=E3=83=A1= =E3=83=BC=E3=83=AB: >=20 > Hi Daichi, >=20 > On Sat, Jun 30, 2018 at 10:32 PM, Daichi GOTO <daichi@freebsd.org> = wrote: >> Author: daichi >> Date: Sun Jul 1 05:32:03 2018 >> New Revision: 335836 >> URL: https://svnweb.freebsd.org/changeset/base/335836 >>=20 >> Log: >> top(1) - support UTF-8 display >>=20 >> ... >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- head/usr.bin/top/display.c Sun Jul 1 01:56:40 2018 = (r335835) >> +++ head/usr.bin/top/display.c Sun Jul 1 05:32:03 2018 = (r335836) >> @@ -1258,19 +1258,43 @@ line_update(char *old, char *new, int start, = int line) >> char * >> printable(char str[]) >> { >> - char *ptr; >> - char ch; >> + char *ptr; >> + char ch; >>=20 >> - ptr =3D str; >> - while ((ch =3D *ptr) !=3D '\0') >> - { >> - if (!isprint(ch)) >> - { >> - *ptr =3D '?'; >> + ptr =3D str; >> + if (utf8flag) { >> + while ((ch =3D *ptr) !=3D '\0') { >> + if (0x00 =3D=3D (0x80 & ch)) { >> + if (!isprint(ch)) { >> + *ptr =3D '?'; >> + } >> + ++ptr; >> + } else if (0xC0 =3D=3D (0xE0 & ch)) { >> + ++ptr; >> + if ('\0' !=3D *ptr) ++ptr; >> + } else if (0xE0 =3D=3D (0xF0 & ch)) { >> + ++ptr; >> + if ('\0' !=3D *ptr) ++ptr; >> + if ('\0' !=3D *ptr) ++ptr; >> + } else if (0xF0 =3D=3D (0xF8 & ch)) { >> + ++ptr; >> + if ('\0' !=3D *ptr) ++ptr; >> + if ('\0' !=3D *ptr) ++ptr; >> + if ('\0' !=3D *ptr) ++ptr; >> + } else { >> + *ptr =3D '?'; >> + ++ptr; >> + } >> + } >> + } else { >> + while ((ch =3D *ptr) !=3D '\0') { >> + if (!isprint(ch)) { >> + *ptr =3D '?'; >> + } >> + ptr++; >> + } >> } >=20 >=20 > I don't think code to decode UTF-8 belongs in top(1). I don't know > what the goal of this routine is, but I doubt this is the right way to > accomplish it. >=20 > For the strvisx portion it seems like support should be rolled into > libc instead. Hi Conrad, The purpose is to display UTF-8 string. Certainly, you are right.=20 In the end I think I should support it with libc. However, I think that=20= it is a problem that UTF-8 can not be used with the top command for a = long=20 period of time. Although it may be transient, I think that keeping it to=20= work is not that bad idea. Best regards, Daichi > (Also, the patch in phabricator does not seem to match what was = committed.) >=20 > Best, > Conrad >=20
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CC4D7694-D0E1-43A8-8B25-F0717D7AB734>