For style reason, I make another patch file.
------------- begin ---------------
--- util.c.orig Sun Mar 18 16:35:12 2001
+++ util.c Tue Mar 20 18:12:23 2001
@@ -60,15 +60,43 @@
prn_printable(s)
const char *s;
{
- unsigned char c;
- int n;
+ const char *p; /* String walker. */
+ char *r, *ri; /* Ptr for result string & walker of it. */
+ int len;
+ int dc; /* Count down of length after 'p' . */
+ size_t sz; /* Number of bytes been processed. */
+ wchar_t c;
- for (n = 0; (c = *s) != '\0'; ++s, ++n)
- if (isprint(c))
- putchar(c);
- else
- putchar('?');
- return n;
+ if (s == NULL)
+ return (0);
+ p = s;
+ dc = len = strlen(s);
+ ri = r = (char *)malloc(len + 1);
+ if (r == NULL)
+ return (0);
+
+ while (dc > 0) {
+ sz = mbtowc(&c, p, dc);
+ if (sz < 0) { /* Not be recognized. */
+ p++;
+ dc--;
+ *ri++ = '?';
+ } else {
+ dc -= sz;
+ if (isprint(c)) {
+ while(sz--)
+ *ri++ = *p++;
+ } else { /* Non-printable char. */
+ p += sz;
+ while(sz--)
+ *ri++ = '?';
+ }
+ }
+ }
+ *ri = '\0';
+ printf("%s", r);
+ free(r);
+ return (len);
}
/*
------------- end -----------------
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message