> 2018/07/02 2:08、Conrad Meyer <c...@freebsd.org>のメール: > > Hi Daichi, > > On Sat, Jun 30, 2018 at 10:32 PM, Daichi GOTO <dai...@freebsd.org> wrote: >> Author: daichi >> Date: Sun Jul 1 05:32:03 2018 >> New Revision: 335836 >> URL: https://svnweb.freebsd.org/changeset/base/335836 >> >> Log: >> top(1) - support UTF-8 display >> >> ... >> ============================================================================== >> --- 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; >> >> - ptr = str; >> - while ((ch = *ptr) != '\0') >> - { >> - if (!isprint(ch)) >> - { >> - *ptr = '?'; >> + ptr = str; >> + if (utf8flag) { >> + while ((ch = *ptr) != '\0') { >> + if (0x00 == (0x80 & ch)) { >> + if (!isprint(ch)) { >> + *ptr = '?'; >> + } >> + ++ptr; >> + } else if (0xC0 == (0xE0 & ch)) { >> + ++ptr; >> + if ('\0' != *ptr) ++ptr; >> + } else if (0xE0 == (0xF0 & ch)) { >> + ++ptr; >> + if ('\0' != *ptr) ++ptr; >> + if ('\0' != *ptr) ++ptr; >> + } else if (0xF0 == (0xF8 & ch)) { >> + ++ptr; >> + if ('\0' != *ptr) ++ptr; >> + if ('\0' != *ptr) ++ptr; >> + if ('\0' != *ptr) ++ptr; >> + } else { >> + *ptr = '?'; >> + ++ptr; >> + } >> + } >> + } else { >> + while ((ch = *ptr) != '\0') { >> + if (!isprint(ch)) { >> + *ptr = '?'; >> + } >> + ptr++; >> + } >> } > > > 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. > > 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. In the end I think I should support it with libc. However, I think that it is a problem that UTF-8 can not be used with the top command for a long period of time. Although it may be transient, I think that keeping it to work is not that bad idea. Best regards, Daichi > (Also, the patch in phabricator does not seem to match what was committed.) > > Best, > Conrad > _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"