Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Jul 2018 03:49:49 +0000 (UTC)
From:      Daichi GOTO <daichi@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r336160 - head/usr.bin/top
Message-ID:  <201807100349.w6A3nnUi068089@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: daichi
Date: Tue Jul 10 03:49:48 2018
New Revision: 336160
URL: https://svnweb.freebsd.org/changeset/base/336160

Log:
  top(1): rollback r335836
  
  Encoding-specific processing introduced in r335836 is not recommended.
  And doing getenv("LANG") and assuming an encoding based on it is a
  very bad practice to internationalize software.
  
  Submitted by:	hrs
  Differential Revision:	https://reviews.freebsd.org/D16203

Modified:
  head/usr.bin/top/display.c
  head/usr.bin/top/machine.c
  head/usr.bin/top/top.c
  head/usr.bin/top/top.h
  head/usr.bin/top/utils.c

Modified: head/usr.bin/top/display.c
==============================================================================
--- head/usr.bin/top/display.c	Tue Jul 10 03:03:10 2018	(r336159)
+++ head/usr.bin/top/display.c	Tue Jul 10 03:49:48 2018	(r336160)
@@ -1275,43 +1275,19 @@ line_update(char *old, char *new, int start, int line)
 char *
 printable(char str[])
 {
-	char *ptr;
-	char ch;
+    char *ptr;
+    char ch;
 
-	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++;
-		}
+    ptr = str;
+    while ((ch = *ptr) != '\0')
+    {
+	if (!isprint(ch))
+	{
+	    *ptr = '?';
 	}
-	return(str);
+	ptr++;
+    }
+    return(str);
 }
 
 void

Modified: head/usr.bin/top/machine.c
==============================================================================
--- head/usr.bin/top/machine.c	Tue Jul 10 03:03:10 2018	(r336159)
+++ head/usr.bin/top/machine.c	Tue Jul 10 03:49:48 2018	(r336160)
@@ -985,13 +985,9 @@ format_next_process(struct handle * xhandle, char *(*g
 				if (*src == '\0')
 					continue;
 				len = (argbuflen - (dst - argbuf) - 1) / 4;
-				if (utf8flag) {
-					utf8strvisx(dst, src, MIN(strlen(src), len));
-				} else {
-					strvisx(dst, src,
-					    MIN(strlen(src), len),
-					    VIS_NL | VIS_CSTYLE);
-				}
+				strvisx(dst, src,
+				    MIN(strlen(src), len),
+				    VIS_NL | VIS_CSTYLE);
 				while (*dst != '\0')
 					dst++;
 				if ((argbuflen - (dst - argbuf) - 1) / 4 > 0)

Modified: head/usr.bin/top/top.c
==============================================================================
--- head/usr.bin/top/top.c	Tue Jul 10 03:03:10 2018	(r336159)
+++ head/usr.bin/top/top.c	Tue Jul 10 03:49:48 2018	(r336160)
@@ -69,7 +69,6 @@ static int max_topn;		/* maximum displayable processes
 struct process_select ps;
 const char * myname = "top";
 pid_t mypid;
-bool utf8flag = false;
 
 /* pointers to display routines */
 static void (*d_loadave)(int mpid, double *avenrun) = i_loadave;
@@ -606,14 +605,6 @@ main(int argc, char *argv[])
 	sleep(3 * warnings);
 	fputc('\n', stderr);
     }
-
-	/* check if you are using UTF-8 */
-	char *env_lang;
-	if (NULL != (env_lang = getenv("LANG")) && 
-		0 != strcmp(env_lang, "") &&
-		NULL != strstr(env_lang, "UTF-8")) {
-		utf8flag = true;
-	}
 
 restart:
 

Modified: head/usr.bin/top/top.h
==============================================================================
--- head/usr.bin/top/top.h	Tue Jul 10 03:03:10 2018	(r336159)
+++ head/usr.bin/top/top.h	Tue Jul 10 03:49:48 2018	(r336160)
@@ -8,7 +8,6 @@
 #define TOP_H
 
 #include <unistd.h>
-#include <stdbool.h>
 
 /* Number of lines of header information on the standard screen */
 extern int Header_lines;
@@ -35,7 +34,6 @@ extern enum displaymodes displaymode;
 extern int pcpu_stats;
 extern int overstrike;
 extern pid_t mypid;
-extern bool utf8flag;
 
 extern const char * myname;
 

Modified: head/usr.bin/top/utils.c
==============================================================================
--- head/usr.bin/top/utils.c	Tue Jul 10 03:03:10 2018	(r336159)
+++ head/usr.bin/top/utils.c	Tue Jul 10 03:49:48 2018	(r336160)
@@ -2,7 +2,6 @@
  *  This program may be freely redistributed,
  *  but this entire comment MUST remain intact.
  *
- *  Copyright (c) 2018, Daichi Goto
  *  Copyright (c) 2018, Eitan Adler
  *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
  *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
@@ -328,62 +327,4 @@ find_pid(pid_t pid)
 done:
 	kvm_close(kd);
 	return ret;
-}
-
-/*
- * utf8strvisx(dst,src,src_len) 
- *	strvisx(dst,src,src_len,VIS_NL|VIS_CSTYLE) coresponding to UTF-8.
- */
-static const char *vis_encodes[] = {
-	"\\0", "\\^A", "\\^B", "\\^C", "\\^D", "\\^E", "\\^F", "\\a",
-	"\\b", "\t", "\\n", "\\v", "\\f", "\\r", "\\^N", "\\^O", "\\^P",
-	"\\^Q", "\\^R", "\\^S", "\\^T", "\\^U", "\\^V", "\\^W", "\\^X",
-	"\\^Y", "\\^Z", "\\^[", "\\^\\", "\\^]", "\\^^", "\\^_"
-};
-
-int
-utf8strvisx(char *dst, const char *src, size_t src_len)
-{
-	const signed char *src_p;
-	char *dst_p;
-	int i, j, olen, len;
-
-	src_p = src;
-	dst_p = dst;
-	i = olen = 0;
-	len = (int)src_len;
-	while (i < len) {
-		if (0x00 == (0x80 & *src_p)) {
-			if (0 <= *src_p && *src_p <= 31) {
-				j = strlen(vis_encodes[(int)*src_p]);
-				strcpy(dst_p, vis_encodes[(int)*src_p]);
-				dst_p += j;
-				olen += j;
-			} else if (127 == *src_p) {
-				strcpy(dst_p, "\\^?");
-				olen += 3;
-			} else {
-				*dst_p++ = *src_p;
-				++olen;
-			}
-			++i;
-			++src_p;
-		} else if (0xC0 == (0xE0 & *src_p)) {
-			*dst_p++ = *src_p++; ++i; ++olen;
-			if (i < len) { *dst_p++ = *src_p++; ++i; ++olen; }
-		} else if (0xE0 == (0xF0 & *src_p)) {
-			*dst_p++ = *src_p++; ++i; ++olen;
-			if (i < len) { *dst_p++ = *src_p++; ++i; ++olen; }
-			if (i < len) { *dst_p++ = *src_p++; ++i; ++olen; }
-		} else if (0xF0 == (0xF8 & *src_p)) {
-			*dst_p++ = *src_p++; ++i; ++olen;
-			if (i < len) { *dst_p++ = *src_p++; ++i; ++olen; }
-			if (i < len) { *dst_p++ = *src_p++; ++i; ++olen; }
-			if (i < len) { *dst_p++ = *src_p++; ++i; ++olen; }
-		} else {
-			*dst_p++ = '?'; ++i; ++olen;
-		}
-	}
-
-	return olen;
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807100349.w6A3nnUi068089>