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

Reply via email to