diff options
author | June McEnroe <june@causal.agency> | 2017-06-10 16:49:51 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2017-06-10 16:49:51 -0400 |
commit | 6ff956880b8dde199fe9ac1314e43b66e0046f71 (patch) | |
tree | a35a9957f67cedd45fcf2428f451944c38747ded /.bin/pbd.c | |
parent | Remove Programming keyboard layout (diff) | |
download | src-6ff956880b8dde199fe9ac1314e43b66e0046f71.tar.gz src-6ff956880b8dde199fe9ac1314e43b66e0046f71.zip |
Move actual dotfiles into home directory
Diffstat (limited to '.bin/pbd.c')
-rwxr-xr-x | .bin/pbd.c | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/.bin/pbd.c b/.bin/pbd.c deleted file mode 100755 index e7b61d12..00000000 --- a/.bin/pbd.c +++ /dev/null @@ -1,73 +0,0 @@ -#if 0 -exec cc -Wall -Wextra -pedantic $@ -o $(dirname $0)/pbd $0 -#endif - -// TCP server which pipes between macOS pbcopy and pbpaste. - -#include <err.h> -#include <netinet/in.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/socket.h> -#include <sys/wait.h> -#include <sysexits.h> -#include <unistd.h> - -static void spawn(const char *cmd, int childFd, int parentFd) { - pid_t pid = fork(); - if (pid < 0) err(EX_OSERR, "fork"); - - if (pid) { - int status; - pid_t wait = waitpid(pid, &status, 0); - if (wait < 0) err(EX_OSERR, "waitpid"); - - if (status) { - warnx("child %s status %d", cmd, status); - } - } else { - int fd = dup2(parentFd, childFd); - if (fd < 0) err(EX_OSERR, "dup2"); - - int error = execlp(cmd, cmd); - if (error) err(EX_OSERR, "execlp"); - } -} - -int main() { - int error; - - int server = socket(PF_INET, SOCK_STREAM, 0); - if (server < 0) err(EX_OSERR, "socket"); - - struct sockaddr_in addr = { - .sin_family = AF_INET, - .sin_port = htons(7062), - .sin_addr = { .s_addr = htonl(0x7f000001) }, - }; - - error = bind(server, (struct sockaddr *)&addr, sizeof(addr)); - if (error) err(EX_OSERR, "bind"); - - error = listen(server, 1); - if (error) err(EX_OSERR, "listen"); - - for (;;) { - int client = accept(server, NULL, NULL); - if (client < 0) err(EX_OSERR, "accept"); - - spawn("pbpaste", STDOUT_FILENO, client); - - uint8_t p; - ssize_t peek = recv(client, &p, 1, MSG_PEEK); - if (peek < 0) err(EX_IOERR, "recv"); - - if (peek) { - spawn("pbcopy", STDIN_FILENO, client); - } - - error = close(client); - if (error) err(EX_IOERR, "close"); - } -} |