From b72fddb828c66106e5fa367a1444f967f50bc58c Mon Sep 17 00:00:00 2001 From: pk910 Date: Mon, 6 Feb 2012 04:11:33 +0100 Subject: [PATCH] modernized argument parser (use getopt now) --- src/main.c | 28 +++++++++++++++++++--------- src/main.h | 1 + 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main.c b/src/main.c index fb8abce..d9819ca 100644 --- a/src/main.c +++ b/src/main.c @@ -157,28 +157,38 @@ void exit_daemon() { int main(int argc, char *argv[]) { int run_as_daemon = 1; - int argi; + int c; process_argv = argv; process_argc = argc; printf("NeonServ v%s\n\n", NEONSERV_VERSION); - for(argi = 1; argi < argc; argi++) { - if(!strcmp(argv[argi], "-f") || !strcmp(argv[argi], "--foreground")) { + struct option options[] = { + {"show", 1, 0, 's'}, + {"foreground", 0, 0, 'f'}, + {"help", 0, 0, 'h'}, + {"version", 0, 0, 'v'}, + {0, 0, 0, 0} + }; + while ((c = getopt_long(argc, argv, "c:dfhkr:v", options, NULL)) != -1) { + switch (c) { + case 's': + print_loglevel = atoi(optarg); + break; + case 'f': run_as_daemon = 0; - } else if(!strcmp(argv[argi], "-s") || !strcmp(argv[argi], "--show")) { - if(argi+1 == argc) break; - argi++; - print_loglevel = atoi(argv[argi]); - } else if(!strcmp(argv[argi], "-v") || !strcmp(argv[argi], "--version")) { + break; + case 'v': printf("Version: %s.%d (%s)\n", NEONSERV_VERSION, patchlevel, (strcmp(revision, "") ? revision : "-")); printf("Build: #%s %s (%s lines, " COMPILER ")\n", compilation, creation, codelines); exit(0); - } else if(!strcmp(argv[argi], "-h") || !strcmp(argv[argi], "--help")) { + break; + case 'h': printf("Usage: ./neonserv [-s loglevel] [-f] [-h|-v]\n"); printf(" -s, --show show log lines matching loglevel in stdout.\n"); printf(" -f, --foreground run NeonServ in the foreground.\n"); printf(" -h, --help prints this usage message.\n"); printf(" -v, --version prints this program's version.\n"); exit(0); + break; } } if(geteuid() == 0 || getuid() == 0) { diff --git a/src/main.h b/src/main.h index 12c6899..eb39d49 100644 --- a/src/main.h +++ b/src/main.h @@ -40,6 +40,7 @@ #include #endif #include +#include #include #include #include -- 2.20.1