> 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"); > } >