* thinker <[EMAIL PROTECTED]> [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 - [[EMAIL PROTECTED]|[EMAIL PROTECTED]]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to