X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Ftincd.c;h=06e6713056c4c0b09027920eae32bdf0f4b2c702;hb=3d787920d51a35e74e442c7265be3b13b69ad8e4;hp=5bfeeabb364cbe68b32b919d86520a0ff18c2088;hpb=76de8e3924fc36e5a3e906741bf640dceb846800;p=tinc diff --git a/src/tincd.c b/src/tincd.c index 5bfeeabb..06e67130 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -158,6 +158,17 @@ static void usage(bool status) { } } +// Try to resolve path to absolute, return a copy of the argument if this fails. +static char *get_path_arg(char *arg) { + char *result = absolute_path(arg); + + if(!result) { + result = xstrdup(arg); + } + + return result; +} + static bool parse_options(int argc, char **argv) { config_t *cfg; int r; @@ -175,7 +186,7 @@ static bool parse_options(int argc, char **argv) { case OPT_CONFIG_FILE: free(confbase); - confbase = xstrdup(optarg); + confbase = get_path_arg(optarg); break; case OPT_NO_DETACH: @@ -263,14 +274,14 @@ static bool parse_options(int argc, char **argv) { if(optarg) { free(logfilename); - logfilename = xstrdup(optarg); + logfilename = get_path_arg(optarg); } break; case OPT_PIDFILE: free(pidfilename); - pidfilename = xstrdup(optarg); + pidfilename = get_path_arg(optarg); break; default: