From 4c908090cb76e241deab4d0359dfba44ec02d69f Mon Sep 17 00:00:00 2001 From: Pierre-Francois Carpentier Date: Thu, 17 Dec 2015 15:49:58 +0100 Subject: [PATCH] implementing argument parsing --- src/cmd/uts-server.c | 65 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/src/cmd/uts-server.c b/src/cmd/uts-server.c index aedc0b1..d234805 100644 --- a/src/cmd/uts-server.c +++ b/src/cmd/uts-server.c @@ -1,6 +1,67 @@ -int main() +#include +#include +#include +#include +#include +#include +#include +#include + +const char *argp_program_version = UTS_VERSION; + +const char *argp_program_bug_address = "Pierre-Francois Carpentier "; + +static char doc[] = "\nUTS micro timestamp server (RFC 3161)"; + +static struct argp_option options[] = { + {"conffile", 'c', "CONFFILE", 0, "Path to configuration file"}, + {"daemonize", 'd', 0, 0, "Launch as a daemon"}, + { 0 } +}; + +/* A description of the arguments we accept. */ +static char args_doc[] = "-c CONFFILE -d"; + +struct arguments { - skeleton_daemon(); + char *args[2]; /* arg1 & arg2 */ + int daemonize; + char *conffile; +}; + +static error_t parse_opt (int key, char *arg, struct argp_state *state) +{ + /* Get the input argument from argp_parse, which we + know is a pointer to our arguments structure. */ + struct arguments *arguments = (struct arguments *)state->input; + + switch (key) + { + case 'd': + arguments->daemonize = 1; + break; + case 'c': + arguments->conffile = arg; + break; + default: + return ARGP_ERR_UNKNOWN; + } + return 0; +} + +/* Our argp parser. */ +static struct argp argp = { options, parse_opt, args_doc, doc }; + + +int main(int argc, char **argv) +{ + + struct arguments args; + args.conffile = NULL; + args.daemonize = 0; + argp_parse (&argp, argc, argv, 0, 0, &args); + + //skeleton_daemon(); while (1) {