Skip site navigation (1)Skip section navigation (2)
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>