Date: Tue, 20 Mar 2001 01:12:46 -0800 From: Alfred Perlstein <bright@wintelcom.net> To: thinker <thinker@branda.to> Cc: freebsd-current@FreeBSD.ORG Subject: Re: patch /bin/ls again, for mb supporting. Message-ID: <20010320011246.O29888@fw.wintelcom.net> In-Reply-To: <20010320164901.A14424@hell.branda.to>; from thinker@branda.to on Tue, Mar 20, 2001 at 04:49:01PM %2B0000 References: <20010320164901.A14424@hell.branda.to>
next in thread | previous in thread | raw e-mail | index | archive | help
* thinker <thinker@branda.to> [010320 00:48] wrote:
> 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;
C has allowed for identifiers larger than 6 characters for quite
some time, any chance on you making use of this feature? Or at
least adding a comment here and there?
> + p = s;
> + dc = len = strlen(s);
> + ri = r = (char *)malloc(len + 1);
Where is the check for malloc failing?
> + 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++ = '?';
Why didn't you use strlcpy/memcpy as suggested?
> + }
> + }
> + }
> + *ri = 0;
*ri = '\0';
> + printf("%s", r);
> + free(r);
> + return len;
return (len);
> }
--
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
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?20010320011246.O29888>
