From 05765771c2c59b00e8fb8af98a4b170308f02793 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 4 Jun 2011 21:33:11 +0200 Subject: [PATCH] uptime: new usage & fix coding style Coding style fixed and more readable help output. Signed-off-by: Sami Kerola --- uptime.c | 52 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/uptime.c b/uptime.c index 6a4d8bd8..b0b2b2f5 100644 --- a/uptime.c +++ b/uptime.c @@ -1,17 +1,45 @@ +#include +#include +#include #include -#include #include "proc/whattime.h" #include "proc/version.h" -int main(int argc, char *argv[]) { - if(argc == 1) { - print_uptime(); - return 0; - } - if((argc == 2) && (!strcmp(argv[1], "-V"))) { - display_version(); - return 0; - } - fprintf(stderr, "usage: uptime [-V]\n -V display version\n"); - return 1; +static void __attribute__ ((__noreturn__)) + usage(FILE * out) +{ + fprintf(out, + "\nUsage: %s [options]\n" + "\nOptions:\n", program_invocation_short_name); + fprintf(out, + " -h, --help display this help text\n" + " -V, --version display version information and exit\n"); + fprintf(out, "\nFor more information see uptime(1).\n"); + + exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS); +} + +int main(int argc, char **argv) +{ + int c; + + static const struct option longopts[] = { + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'V'}, + {NULL, 0, NULL, 0} + }; + + while ((c = getopt_long(argc, argv, "hV", longopts, NULL)) != -1) + switch (c) { + case 'h': + usage(stdout); + case 'V': + display_version(); + return EXIT_SUCCESS; + default: + usage(stderr); + } + + print_uptime(); + return EXIT_SUCCESS; }