diff options
author | William Hubbs <williamh@gentoo.org> | 2011-02-12 19:15:29 -0600 |
---|---|---|
committer | William Hubbs <w.d.hubbs@gmail.com> | 2011-02-14 18:40:05 -0600 |
commit | 73d1a8698e101b1dcf589b27b35ac9b09ea6d02c (patch) | |
tree | c1ab7cbb6370d43c20f87ca0480f18731ecc0ed1 | |
parent | bae0a693a9271b3ed0f723fdafc22efe5f07b70e (diff) |
make version option common
This reworks the code for the version option so that it is part of the
parser loop and is a common option to all applets.
-rw-r--r-- | src/rc/_usage.c | 20 | ||||
-rw-r--r-- | src/rc/_usage.h | 8 | ||||
-rw-r--r-- | src/rc/rc.c | 16 |
3 files changed, 27 insertions, 17 deletions
diff --git a/src/rc/_usage.c b/src/rc/_usage.c index ec1ce1d3..175634af 100644 --- a/src/rc/_usage.c +++ b/src/rc/_usage.c @@ -1,7 +1,7 @@ /* * Copyright (c) 2007-2008 Roy Marples <roy@marples.name> * All rights reserved - + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -24,6 +24,8 @@ * SUCH DAMAGE. */ +#include "version.h" + #if lint # define _noreturn #endif @@ -34,6 +36,22 @@ #endif _noreturn static void +show_version(void) +{ + const char *bootlevel = NULL; + + printf("%s (OpenRC", applet); + if ((bootlevel = rc_sys())) + printf(" [%s]", bootlevel); + printf(") %s", VERSION); +#ifdef BRANDING + printf(" (%s)", BRANDING); +#endif + printf("\n"); + exit(EXIT_SUCCESS); +} + +_noreturn static void usage(int exit_status) { const char * const has_arg[] = { "", "<arg>", "[arg]" }; diff --git a/src/rc/_usage.h b/src/rc/_usage.h index d65e05e7..5e116c94 100644 --- a/src/rc/_usage.h +++ b/src/rc/_usage.h @@ -1,7 +1,7 @@ /* * Copyright (c) 2007-2008 Roy Marples <roy@marples.name> * All rights reserved - + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -24,11 +24,12 @@ * SUCH DAMAGE. */ -#define getoptstring_COMMON "Chqv" +#define getoptstring_COMMON "ChqVv" #define longopts_COMMON \ { "help", 0, NULL, 'h'}, \ { "nocolor", 0, NULL, 'C'}, \ + { "version", 0, NULL, 'V'}, \ { "verbose", 0, NULL, 'v'}, \ { "quiet", 0, NULL, 'q'}, \ { NULL, 0, NULL, 0 } @@ -36,11 +37,13 @@ #define longopts_help_COMMON \ "Display this help output", \ "Disable color output", \ + "Display software version", \ "Run verbosely", \ "Run quietly" #define case_RC_COMMON_getopt_case_C setenv ("EINFO_COLOR", "NO", 1); #define case_RC_COMMON_getopt_case_h usage (EXIT_SUCCESS); +#define case_RC_COMMON_getopt_case_V if (argc == 2) show_version(); #define case_RC_COMMON_getopt_case_v setenv ("EINFO_VERBOSE", "YES", 1); #define case_RC_COMMON_getopt_case_q setenv ("EINFO_QUIET", "YES", 1); #define case_RC_COMMON_getopt_default usage (EXIT_FAILURE); @@ -48,6 +51,7 @@ #define case_RC_COMMON_GETOPT \ case 'C': case_RC_COMMON_getopt_case_C; break; \ case 'h': case_RC_COMMON_getopt_case_h; break; \ + case 'V': case_RC_COMMON_getopt_case_V; break; \ case 'v': case_RC_COMMON_getopt_case_v; break; \ case 'q': case_RC_COMMON_getopt_case_q; break; \ default: case_RC_COMMON_getopt_default; break; diff --git a/src/rc/rc.c b/src/rc/rc.c index bdda2ef6..525ccdc3 100644 --- a/src/rc/rc.c +++ b/src/rc/rc.c @@ -837,18 +837,6 @@ main(int argc, char **argv) if (!applet) eerrorx("arguments required"); - if (argc > 1 && (strcmp(argv[1], "--version") == 0)) { - printf("%s (OpenRC", applet); - if ((bootlevel = rc_sys())) - printf(" [%s]", bootlevel); - printf(") " VERSION -#ifdef BRANDING - " (" BRANDING ")" -#endif - "\n"); - exit(EXIT_SUCCESS); - } - /* Run our built in applets. If we ran one, we don't return. */ run_applets(argc, argv); @@ -905,8 +893,8 @@ main(int argc, char **argv) } exit(EXIT_SUCCESS); /* NOTREACHED */ - case_RC_COMMON_GETOPT - } + case_RC_COMMON_GETOPT + } } newlevel = argv[optind++]; |