diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2017-11-21 16:12:18 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2017-11-21 16:12:18 +0000 |
commit | 5abe508bfef8372472d66adf69cf08e07125820c (patch) | |
tree | 4fc1feeb088d2fc1a3a1d02d20240d05a606c1bb /src/misc/skabus-dyntee-client.c | |
download | skabus-5abe508bfef8372472d66adf69cf08e07125820c.tar.xz |
Initial commit
Diffstat (limited to 'src/misc/skabus-dyntee-client.c')
-rw-r--r-- | src/misc/skabus-dyntee-client.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/misc/skabus-dyntee-client.c b/src/misc/skabus-dyntee-client.c new file mode 100644 index 0000000..b73980d --- /dev/null +++ b/src/misc/skabus-dyntee-client.c @@ -0,0 +1,39 @@ +/* ISC license. */ + +#include <skalibs/nonposix.h> +#include <sys/socket.h> +#include <skalibs/sgetopt.h> +#include <skalibs/strerr2.h> +#include <skalibs/djbunix.h> +#include <skalibs/webipc.h> + +#define USAGE "skabus-dyntee-client path prog..." +#define dieusage() strerr_dieusage(100, USAGE) + +int main (int argc, char const *const *argv, char const *const *envp) +{ + PROG = "skabus-dyntee-client" ; + { + subgetopt_t l = SUBGETOPT_ZERO ; + for (;;) + { + int opt = subgetopt_r(argc, argv, "", &l) ; + if (opt == -1) break ; + switch (opt) + { + default : dieusage() ; + } + } + argc -= l.ind ; argv += l.ind ; + if (argc < 2) dieusage() ; + } + + { + int fd = ipc_stream_b() ; + if (fd < 0) strerr_diefu1sys(111, "create socket") ; + if (!ipc_connect(fd, argv[0])) strerr_diefu2sys(111, "connect to ", argv[0]) ; + if (shutdown(fd, SHUT_WR) < 0) strerr_diefu1sys(111, "shutdown socket for writing") ; + if (fd_move(0, fd) < 0) strerr_diefu1sys(111, "move socket fd to stdin") ; + } + xpathexec_run(argv[1], argv+1, envp) ; +} |