diff options
author | Jim Meyering <jim@meyering.net> | 1998-04-11 18:21:24 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 1998-04-11 18:21:24 +0000 |
commit | ac7b3c4fa9ed57b536207950255f71f0d0cd3448 (patch) | |
tree | e32c9525eed1ad21e7ef59fa804f1ede0ce0deab /src | |
parent | b402870080b5a3c84febb6c9de0b3977d1c0f010 (diff) | |
download | coreutils-ac7b3c4fa9ed57b536207950255f71f0d0cd3448.tar.xz |
[HAVE_INTTYPES_H]: Include inttypes.h.
Declare counters to be of type uintmax_t.
(write_counts): Use human_readable to format potentially-long-long
numbers. Suggestion from Rogier Wolff.
Diffstat (limited to 'src')
-rw-r--r-- | src/wc.c | 37 |
1 files changed, 24 insertions, 13 deletions
@@ -19,12 +19,16 @@ and David MacKenzie, djm@gnu.ai.mit.edu. */ #include <config.h> +#if HAVE_INTTYPES_H +# include <inttypes.h> +#endif #include <stdio.h> #include <getopt.h> #include <sys/types.h> #include "system.h" #include "error.h" +#include "human.h" /* Size of atomic reads. */ #define BUFFER_SIZE (16 * 1024) @@ -36,7 +40,10 @@ char *program_name; /* Cumulative number of lines, words, and chars in all files so far. max_line_length is the maximum over all files processed so far. */ -static unsigned long total_lines, total_words, total_chars, max_line_length; +static uintmax_t total_lines; +static uintmax_t total_words; +static uintmax_t total_chars; +static uintmax_t max_line_length; /* Which counts to print. */ static int print_lines, print_words, print_chars, print_linelength; @@ -94,29 +101,33 @@ read standard input.\n\ } static void -write_counts (long unsigned int lines, long unsigned int words, - long unsigned int chars, long unsigned int linelength, +write_counts (uintmax_t lines, + uintmax_t words, + uintmax_t chars, + uintmax_t linelength, const char *file) { + char buf[LONGEST_HUMAN_READABLE + 1]; + char const *space = ""; + if (print_lines) - printf ("%7lu", lines); + { + printf ("%7s", human_readable (lines, buf, 1, 1, 0)); + space = " "; + } if (print_words) { - if (print_lines) - putchar (' '); - printf ("%7lu", words); + printf ("%s%7s", space, human_readable (words, buf, 1, 1, 0)); + space = " "; } if (print_chars) { - if (print_lines || print_words) - putchar (' '); - printf ("%7lu", chars); + printf ("%s%7s", space, human_readable (chars, buf, 1, 1, 0)); + space = " "; } if (print_linelength) { - if (print_lines || print_words || print_chars) - putchar (' '); - printf ("%7lu", linelength); + printf ("%s%7s", space, human_readable (linelength, buf, 1, 1, 0)); } if (*file) printf (" %s", file); |