From 196707bb546875b9c07ffd92c9b16e524b087632 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 6 Jun 2017 14:14:18 -0400 Subject: [PATCH] Print version information on startup and add --version option --- tid/example/tidc_main.c | 16 ++++++++++++++-- tid/example/tids_main.c | 16 ++++++++++++++-- tr/tr_main.c | 40 +++++++++++++++++++++++++++++----------- 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/tid/example/tidc_main.c b/tid/example/tidc_main.c index 96e1d07..8697ece 100644 --- a/tid/example/tidc_main.c +++ b/tid/example/tidc_main.c @@ -83,19 +83,25 @@ static void tidc_resp_handler (TIDC_INSTANCE * tidc, } +static void print_version_info(void) +{ + printf("Moonshot TID Client %s\n\n", PACKAGE_VERSION); +} + /* command-line option setup */ /* argp global parameters */ const char *argp_program_bug_address=PACKAGE_BUGREPORT; /* bug reporting address */ /* doc strings */ -static const char doc[]=PACKAGE_NAME " - TID Client"; +static const char doc[]=PACKAGE_NAME " - Moonshot TID Client " PACKAGE_VERSION; static const char arg_doc[]=" []"; /* string describing arguments, if any */ /* define the options here. Fields are: * { long-name, short-name, variable name, options, help description } */ static const struct argp_option cmdline_options[] = { - { NULL } + { "version", 'v', NULL, 0, "Print version information and exit"}, + { NULL } }; /* structure for communicating with option parser */ @@ -149,6 +155,10 @@ static error_t parse_option(int key, char *arg, struct argp_state *state) } break; + case 'v': + print_version_info(); + exit(0); + default: return ARGP_ERR_UNKNOWN; } @@ -179,6 +189,8 @@ int main (int argc, argp_parse(&argp, argc, argv, 0, 0, &opts); /* TBD -- validity checking, dealing with quotes, etc. */ + print_version_info(); + /* Use standalone logging */ tr_log_open(); diff --git a/tid/example/tids_main.c b/tid/example/tids_main.c index 7b58840..8673cdd 100644 --- a/tid/example/tids_main.c +++ b/tid/example/tids_main.c @@ -278,18 +278,24 @@ static int auth_handler(gss_name_t gss_name, TR_NAME *client, return result; } +static void print_version_info(void) +{ + printf("Moonshot TID Server %s\n\n", PACKAGE_VERSION); +} + /* command-line option setup */ /* argp global parameters */ const char *argp_program_bug_address=PACKAGE_BUGREPORT; /* bug reporting address */ /* doc strings */ -static const char doc[]=PACKAGE_NAME " - TID Server"; +static const char doc[]=PACKAGE_NAME " - Moonshot TID Server " PACKAGE_VERSION; static const char arg_doc[]=" "; /* string describing arguments, if any */ /* define the options here. Fields are: * { long-name, short-name, variable name, options, help description } */ static const struct argp_option cmdline_options[] = { + { "version", 'v', NULL, 0, "Print version information and exit"}, { NULL } }; @@ -339,6 +345,10 @@ static error_t parse_option(int key, char *arg, struct argp_state *state) } break; + case 'v': + print_version_info(); + exit(0); + default: return ARGP_ERR_UNKNOWN; } @@ -354,11 +364,13 @@ int main (int argc, { TIDS_INSTANCE *tids; TR_NAME *gssname = NULL; - struct cmdline_args opts={NULL}; + struct cmdline_args opts={0}; /* parse the command line*/ argp_parse(&argp, argc, argv, 0, 0, &opts); + print_version_info(); + talloc_set_log_stderr(); /* Use standalone logging */ diff --git a/tr/tr_main.c b/tr/tr_main.c index 1f2e2de..a03ef4b 100644 --- a/tr/tr_main.c +++ b/tr/tr_main.c @@ -55,6 +55,11 @@ /***** command-line option handling / setup *****/ +static void print_version_info(void) +{ + printf("Moonshot Trust Router %s\n\n", PACKAGE_VERSION); +} + /* Strip trailing / from a path name.*/ static void remove_trailing_slash(char *s) { size_t n; @@ -69,19 +74,21 @@ static void remove_trailing_slash(char *s) { const char *argp_program_bug_address=PACKAGE_BUGREPORT; /* bug reporting address */ /* doc strings */ -static const char doc[]=PACKAGE_NAME " - Moonshot Trust Router"; +static const char doc[]=PACKAGE_NAME " - Moonshot Trust Router " PACKAGE_VERSION; static const char arg_doc[]=""; /* string describing arguments, if any */ /* define the options here. Fields are: * { long-name, short-name, variable name, options, help description } */ static const struct argp_option cmdline_options[] = { { "config-dir", 'c', "DIR", 0, "Specify configuration file location (default is current directory)"}, + { "version", 'v', NULL, 0, "Print version information and exit"}, { NULL } }; /* structure for communicating with option parser */ struct cmdline_args { - char *config_dir; + int version_requested; + char *config_dir; }; /* parser for individual options - fills in a struct cmdline_args */ @@ -91,16 +98,20 @@ static error_t parse_option(int key, char *arg, struct argp_state *state) struct cmdline_args *arguments=state->input; switch (key) { - case 'c': - if (arg == NULL) { - /* somehow we got called without an argument */ + case 'c': + if (arg == NULL) { + /* somehow we got called without an argument */ + return ARGP_ERR_UNKNOWN; + } + arguments->config_dir=arg; + break; + + case 'v': + arguments->version_requested=1; + break; + + default: return ARGP_ERR_UNKNOWN; - } - arguments->config_dir=arg; - break; - - default: - return ARGP_ERR_UNKNOWN; } return 0; /* success */ @@ -159,6 +170,7 @@ int main(int argc, char *argv[]) /***** parse command-line arguments *****/ /* set defaults */ + opts.version_requested=0; opts.config_dir="."; /* parse the command line*/ @@ -167,6 +179,12 @@ int main(int argc, char *argv[]) /* process options */ remove_trailing_slash(opts.config_dir); + + /***** Print version info *****/ + print_version_info(); + if (opts.version_requested) + return 0; /* requested that we print version and exit */ + /***** create a Trust Router instance *****/ if (NULL == (tr = tr_create(main_ctx))) { tr_crit("Unable to create Trust Router instance, exiting."); -- 2.1.4