Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Mar 2001 16:49:01 +0000
From:      thinker <thinker@branda.to>
To:        freebsd-current@freebsd.org
Subject:   patch /bin/ls again, for mb supporting.
Message-ID:  <20010320164901.A14424@hell.branda.to>

next in thread | raw e-mail | index | archive | help
Hi,
	There are some disscuss about patch file of /bin/ls. You guys
give me some suggestion, and I make a new patch file for /bin/ls to
meet people's wish. Following is patch for /bin/ls, plz review again.
I had change from rune to mb* & wc* ways.

------------- begin ---------
--- util.c.orig	Sun Mar 18 16:35:12 2001
+++ util.c	Tue Mar 20 16:11:37 2001
@@ -60,15 +60,37 @@
 prn_printable(s)
 	const char *s;
 {
-	unsigned char c;
-	int n;
+	const char *p;
+	char *r, *ri;
+	int len, dc;
+	size_t sz;
+	wchar_t c;
 
-	for (n = 0; (c = *s) != '\0'; ++s, ++n)
-		if (isprint(c))
-			putchar(c);
-		else
-			putchar('?');
-	return n;
+	p = s;
+	dc = len = strlen(s);
+	ri = r = (char *)malloc(len + 1);
+	while (dc) {
+		sz = mbtowc(&c, p, dc);
+		if (sz < 0) {
+			p++;
+			dc--;
+			*ri++ = '?';
+		} else {
+			dc -= sz;
+			if (isprint(c)) {
+				while(sz--)
+					*ri++ = *p++;
+			} else {
+				p += sz;
+				while(sz--)
+					*ri++ = '?';
+			}
+		}
+	}
+	*ri = 0;
+	printf("%s", r);
+	free(r);
+	return len;
 }
 
 /*

-------------- end ------------------

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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