> On 04 Sep 2016, at 00:06, Frederic Cambus <f...@statdns.com> wrote:
> 
> Hi tech@,
> 
> Some cleanups and tweaks for wc(1):
> 
> - Removed unnecessary string.h include
> - Changed 'format_and_print' argument type to int64_t and casting
>  inside the function
> - Declaring 'print_counts', 'format_and_print', and 'cnt' as static
> - Remove unnecessary cast for NULL, and (void) casts from printfs,
>  'mbtowc' and 'format_and_print' calls
> - In 'cnt', change bufsz type from ssize_t to size_t to avoid
>  converting between pointers to integer types with different sign
>  when calling getline (catched when compiling with Clang)
> - Use return instead of exit in main

ok jung@

> Index: wc.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/wc/wc.c,v
> retrieving revision 1.20
> diff -u -p -u -p -r1.20 wc.c
> --- wc.c      8 Dec 2015 01:00:45 -0000       1.20
> +++ wc.c      8 May 2016 21:51:28 -0000
> @@ -34,7 +34,6 @@
> #include <sys/file.h>
> #include <stdio.h>
> #include <stdlib.h>
> -#include <string.h>
> #include <locale.h>
> #include <ctype.h>
> #include <err.h>
> @@ -45,12 +44,12 @@
> 
> int64_t       tlinect, twordct, tcharct;
> int   doline, doword, dochar, humanchar, multibyte;
> -int  rval;
> +int  rval;
> extern char *__progname;
> 
> -void print_counts(int64_t, int64_t, int64_t, char *);
> -void format_and_print(long long);
> -void cnt(char *);
> +static void print_counts(int64_t, int64_t, int64_t, char *);
> +static void format_and_print(int64_t);
> +static void cnt(char *);
> 
> int
> main(int argc, char *argv[])
> @@ -82,10 +81,10 @@ main(int argc, char *argv[])
>                       break;
>               case '?':
>               default:
> -                     (void)fprintf(stderr,
> +                     fprintf(stderr,
>                           "usage: %s [-c | -m] [-hlw] [file ...]\n",
>                           __progname);
> -                     exit(1);
> +                     return 1;
>               }
>       argv += optind;
>       argc -= optind;
> @@ -99,7 +98,7 @@ main(int argc, char *argv[])
>               doline = doword = dochar = 1;
> 
>       if (!*argv) {
> -             cnt((char *)NULL);
> +             cnt(NULL);
>       } else {
>               int dototal = (argc > 1);
> 
> @@ -111,14 +110,14 @@ main(int argc, char *argv[])
>                       print_counts(tlinect, twordct, tcharct, "total");
>       }
> 
> -     exit(rval);
> +     return rval;
> }
> 
> -void
> +static void
> cnt(char *file)
> {
>       static char *buf;
> -     static ssize_t bufsz;
> +     static size_t bufsz;
> 
>       FILE *stream;
>       char *C;
> @@ -213,7 +212,7 @@ cnt(char *file)
>                                       ++charct;
>                                       len = mbtowc(&wc, C, MB_CUR_MAX);
>                                       if (len == -1) {
> -                                             (void)mbtowc(NULL, NULL,
> +                                             mbtowc(NULL, NULL,
>                                                   MB_CUR_MAX);
>                                               len = 1;
>                                               wc = L' ';
> @@ -263,31 +262,31 @@ cnt(char *file)
>       }
> }
> 
> -void 
> -format_and_print(long long v)
> +static void
> +format_and_print(int64_t v)
> {
>       if (humanchar) {
>               char result[FMT_SCALED_STRSIZE];
> 
> -             (void)fmt_scaled(v, result);
> -             (void)printf("%7s", result);
> +             fmt_scaled((long long)v, result);
> +             printf("%7s", result);
>       } else {
> -             (void)printf(" %7lld", v);
> +             printf(" %7lld", v);
>       }
> }
> 
> -void
> +static void
> print_counts(int64_t lines, int64_t words, int64_t chars, char *name)
> {
>       if (doline)
> -             format_and_print((long long)lines);
> +             format_and_print(lines);
>       if (doword)
> -             format_and_print((long long)words);
> +             format_and_print(words);
>       if (dochar)
> -             format_and_print((long long)chars);
> +             format_and_print(chars);
> 
>       if (name)
> -             (void)printf(" %s\n", name);
> +             printf(" %s\n", name);
>       else
> -             (void)printf("\n");
> +             printf("\n");
> }
> 

Reply via email to