diff options
author | June McEnroe <june@causal.agency> | 2019-11-03 15:55:23 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-11-03 15:55:23 -0500 |
commit | 3c6b153c69f9cf5e1582a44e8ff79c9476a18e5b (patch) | |
tree | a47bc1d12365cd460880df401c9a71388f99d368 | |
parent | Set up /var/run/calico and /usr/local/etc/pounce (diff) | |
download | pounce-3c6b153c69f9cf5e1582a44e8ff79c9476a18e5b.tar.gz pounce-3c6b153c69f9cf5e1582a44e8ff79c9476a18e5b.zip |
Append bindHost to bindPath if it is a directory
-rw-r--r-- | bounce.c | 17 | ||||
-rw-r--r-- | pounce.1 | 10 |
2 files changed, 22 insertions, 5 deletions
diff --git a/bounce.c b/bounce.c index 01612e8..26bbeb8 100644 --- a/bounce.c +++ b/bounce.c @@ -172,7 +172,7 @@ static void signalHandler(int signal) { int main(int argc, char *argv[]) { const char *bindHost = "localhost"; const char *bindPort = "6697"; - const char *bindUnix = NULL; + char bindPath[PATH_MAX] = ""; char certPath[PATH_MAX] = ""; char privPath[PATH_MAX] = ""; const char *save = NULL; @@ -227,7 +227,7 @@ int main(int argc, char *argv[]) { break; case 'N': stateJoinNames = true; break; case 'P': bindPort = optarg; break; case 'Q': quit = optarg; - break; case 'U': bindUnix = optarg; + break; case 'U': strlcpy(bindPath, optarg, sizeof(bindPath)); break; case 'W': clientPass = optarg; break; case 'a': auth = optarg; break; case 'f': save = optarg; @@ -248,6 +248,15 @@ int main(int argc, char *argv[]) { } } + if (bindPath[0]) { + struct stat st; + int error = stat(bindPath, &st); + if (error && errno != ENOENT) err(EX_CANTCREAT, "%s", bindPath); + if (S_ISDIR(st.st_mode)) { + strlcat(bindPath, "/", sizeof(bindPath)); + strlcat(bindPath, bindHost, sizeof(bindPath)); + } + } if (!certPath[0]) { snprintf(certPath, sizeof(certPath), DEFAULT_CERT_PATH, bindHost); } @@ -274,8 +283,8 @@ int main(int argc, char *argv[]) { fclose(priv); int bind[8]; - size_t binds = bindUnix - ? listenUnix(bind, ARRAY_LEN(bind), bindUnix) + size_t binds = bindPath[0] + ? listenUnix(bind, ARRAY_LEN(bind), bindPath) : listenBind(bind, ARRAY_LEN(bind), bindHost, bindPort); int server = serverConnect(insecure, host, port); diff --git a/pounce.1 b/pounce.1 index 2a72854..cbe62b3 100644 --- a/pounce.1 +++ b/pounce.1 @@ -1,4 +1,4 @@ -.Dd November 2, 2019 +.Dd November 3, 2019 .Dt POUNCE 1 .Os . @@ -107,6 +107,14 @@ Bind to a UNIX-domain socket at .Ar path . Clients are accepted as sent by .Xr calico 1 . +If +.Ar path +is a directory, +the +.Ar host +set by +.Fl H +is appended to it. This option takes precedence over .Fl H and |