summaryrefslogtreecommitdiff
path: root/daemonize.c
diff options
context:
space:
mode:
authorCarson Fleming <[email protected]>2026-08-26 23:45:04 -0400
committerCarson Fleming <[email protected]>2026-08-26 23:45:04 -0400
commit1ebd40b46b5e36f9bf3df2d0d05119b2a569ff1e (patch)
treec6de2dafb7ea222926d9f83162509b3a68e843fb /daemonize.c
parentcea9c9201069ff608bb53830773609584f15a28c (diff)
downloaddaemonize-1ebd40b46b5e36f9bf3df2d0d05119b2a569ff1e.tar.gz
oops I know how to use varargs now
Diffstat (limited to 'daemonize.c')
-rw-r--r--daemonize.c28
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;