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