svn commit: r335836 - head/usr.bin/top
後藤大地
daichigoto at icloud.com
Mon Jul 2 09:30:39 UTC 2018
> 2018/07/02 2:08、Conrad Meyer <cem at freebsd.org>のメール:
>
> Hi Daichi,
>
> On Sat, Jun 30, 2018 at 10:32 PM, Daichi GOTO <daichi at 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
>
More information about the svn-src-all
mailing list