diff options
author | Omar Polo <op@omarpolo.com> | 2021-02-01 11:07:57 +0000 |
---|---|---|
committer | Omar Polo <op@omarpolo.com> | 2021-02-01 11:07:57 +0000 |
commit | bcf5d929e608a3c61a79f5c021478760db54d271 (patch) | |
tree | caa0512af97041a4eb19f66f998ee834806598fb | |
parent | 6ff23c673989f92a42da0029728fe80ca3dde40f (diff) |
ensure absolute paths in config-less mode
-rw-r--r-- | gmid.c | 10 | ||||
-rw-r--r-- | utils.c | 18 |
2 files changed, 25 insertions, 3 deletions
@@ -19,6 +19,7 @@ #include <errno.h> #include <fcntl.h> #include <limits.h> +#include <limits.h> #include <netdb.h> #include <pwd.h> #include <signal.h> @@ -544,11 +545,14 @@ main(int argc, char **argv) hosts[0].locations[0].match = "*"; switch (argc) { - case 0: - hosts[0].dir = "."; + case 0: { + char path[PATH_MAX]; + + hosts[0].dir = getcwd(path, sizeof(path)); break; + } case 1: - hosts[0].dir = argv[0]; + hosts[0].dir = absolutify_path(argv[0]); break; default: usage(getprogname()); @@ -62,3 +62,21 @@ filesize(int fd) return -1; return len; } + +char * +absolutify_path(const char *path) +{ + char *wd, *r; + + if (*path == '/') { + if ((r = strdup(path)) == NULL) + err(1, "strdup"); + return r; + } + + wd = getcwd(NULL, 0); + if (asprintf(&r, "%s/%s", wd, path) == -1) + err(1, "asprintf"); + free(wd); + return r; +} |