summaryrefslogtreecommitdiff
path: root/src/sum.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1993-04-29 05:26:22 +0000
committerJim Meyering <jim@meyering.net>1993-04-29 05:26:22 +0000
commit2ff4fc16721b6caac08c16c851024b51b16a1824 (patch)
tree34d2aba87f63f370d03812e5c8660c2e84b3908e /src/sum.c
parent19272693f57193a57e5c4c66f65c791b2ee97378 (diff)
downloadcoreutils-2ff4fc16721b6caac08c16c851024b51b16a1824.tar.xz
add --version and --help
Diffstat (limited to 'src/sum.c')
-rw-r--r--src/sum.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/sum.c b/src/sum.c
index a7079b882..c10f0b866 100644
--- a/src/sum.c
+++ b/src/sum.c
@@ -23,6 +23,7 @@
#include <sys/types.h>
#include <getopt.h>
#include "system.h"
+#include "version.h"
static int bsd_sum_file ();
static int sysv_sum_file ();
@@ -38,12 +39,28 @@ static int have_read_stdin;
/* Right-rotate 32-bit integer variable C. */
#define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x8000; else (c) >>= 1;
+/* If non-zero, display usage information and exit. */
+static int flag_help;
+
+/* If non-zero, print the version on standard error. */
+static int flag_version;
+
static struct option const longopts[] =
{
{"sysv", no_argument, NULL, 's'},
+ {"help", no_argument, &flag_help, 1},
+ {"version", no_argument, &flag_version, 1},
{NULL, 0, NULL, 0}
};
+static void
+usage ()
+{
+ fprintf (stderr, "\
+Usage: %s [-rs] [--help] [--version] [--sysv] [file...]\n", program_name);
+ exit (1);
+}
+
void
main (argc, argv)
int argc;
@@ -61,6 +78,9 @@ main (argc, argv)
{
switch (optc)
{
+ case 0:
+ break;
+
case 'r': /* For SysV compatibility. */
sum_func = bsd_sum_file;
break;
@@ -69,13 +89,17 @@ main (argc, argv)
sum_func = sysv_sum_file;
break;
- case '?':
- fprintf (stderr, "\
-Usage: %s [-rs] [--sysv] [file...]\n", argv[0]);
- exit (1);
+ default:
+ usage ();
}
}
+ if (flag_version)
+ fprintf (stderr, "%s\n", version_string);
+
+ if (flag_help)
+ usage ();
+
files_given = argc - optind;
if (files_given == 0)
{