diff options
Diffstat (limited to 'daemonize.c')
| -rw-r--r-- | daemonize.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/daemonize.c b/daemonize.c index 001f260..c7d7dd2 100644 --- a/daemonize.c +++ b/daemonize.c @@ -1,5 +1,6 @@ #include <stdlib.h> #include <stdio.h> +#include <stdarg.h> #include <unistd.h> #include <getopt.h> #include <ctype.h> @@ -16,26 +17,29 @@ const struct option longopts[] = { }; const char* optstring = "dn1:2:"; -void q (char* m) { - fprintf(stderr, "%s\n", m); +void q (char* fmt, ...) { + va_list args; + va_start(args, fmt); + vfprintf(stderr, fmt, args); + va_end(args); exit(1); } -void qusage () { - q("[daemonize] Usage: daemonize [-d|--chdir] [-n|--noclose] [-1|--log-stdout /path/to/log] [-2|--log-stderr /path/to/log] <command>"); +void qusage (const char* arg0) { + q("[daemonize] Usage: %s [-d|--chdir] [-n|--noclose] [-1|--log-stdout /path/to/log] [-2|--log-stderr /path/to/log] <command>\n", arg0); } -void qtoofewargs () { +void qtoofewargs (const char* arg0) { fprintf(stderr, "[daemonize] Too few arguments.\n"); - qusage(); + qusage(arg0); } -void qinvalidarg (char* arg) { +void qinvalidarg (const char* arg, const char* arg0) { fprintf(stderr, "[daemonize] Unrecognized argument: %s\n", arg); - qusage(); + qusage(arg0); } -char* lowerdup (char* a) { +char* lowerdup (const char* a) { char* b = strdup(a); int i; for (i = 0; b[i] != 0; i++) { @@ -52,7 +56,7 @@ struct opts { }; void parseargs(int argc, char** argv, struct opts* savedopts) { - if (argc < 2) qtoofewargs(); + if (argc < 2) qtoofewargs(argv[0]); int c; while ((c = getopt_long(argc, argv, optstring, longopts, NULL)) != -1) { @@ -73,7 +77,7 @@ void parseargs(int argc, char** argv, struct opts* savedopts) { break; default: // getopt will have printed an error already - qusage(); + qusage(argv[0]); } } } @@ -101,7 +105,7 @@ int main (int argc, char** argv) { char cmd[cmdlen]; memcpy(cmd, buffer, cmdlen); free(buffer); - if (cmdlen < 1) qtoofewargs(); + if (cmdlen < 1) qtoofewargs(argv[0]); // Set up logs as appropriate int logs = options.stdlog || options.errlog; |
