enable loglevel setting via command line
authorKarl Palsson <karlp@etactica.com>
Wed, 28 Sep 2016 16:32:39 +0000 (16:32 +0000)
committerJohn Crispin <john@phrozen.org>
Mon, 21 Nov 2016 11:13:46 +0000 (12:13 +0100)
Currently the loglevel is hardcoded to LOG_WARNING, even though there is
debug log messages.  Allow setting the loglevel via cli option.
Include basic help text because we're adding command line options.

Signed-off-by: Karl Palsson <karlp@etactica.com>
src/odhcpd.c

index 6f034bff4e8a99d383aed5c41a2c607d1d3c8521..e83a7007c36b3701f4e2ce272c4b44710d7dcec4 100644 (file)
@@ -54,11 +54,33 @@ static void sighandler(_unused int signal)
        uloop_end();
 }
 
+static void print_usage(const char *app)
+{
+       printf(
+       "== %s Usage ==\n\n"
+        "  -h, --help   Print this help\n"
+        "  -l level     Specify log level 0..7 (default %d)\n",
+               app, LOG_WARNING
+       );
+}
 
-int main()
+int main(int argc, char **argv)
 {
        openlog("odhcpd", LOG_PERROR | LOG_PID, LOG_DAEMON);
-       setlogmask(LOG_UPTO(LOG_WARNING));
+       int opt;
+       int log_level = LOG_WARNING;
+       while ((opt = getopt(argc, argv, "hl:")) != -1) {
+               switch (opt) {
+               case 'h':
+                       print_usage(argv[0]);
+                       return 0;
+               case 'l':
+                       log_level = atoi(optarg);
+                       fprintf(stderr, "Log level set to %d\n", log_level);
+                       break;
+               }
+       }
+       setlogmask(LOG_UPTO(log_level));
        uloop_init();
 
        if (getuid() != 0) {