|
|
1.1 ! root 1: /* usage: connect hostname (answer|send|notice) (in|out) program [ args ... ] */ ! 2: ! 3: #include <ipc.h> ! 4: #include <string.h> ! 5: #include "../paths.h" ! 6: ! 7: int ! 8: main(int argc, char *argv[]) ! 9: { ! 10: int fd; ! 11: char ignore; ! 12: ! 13: if (argc < 5) ! 14: return 1; ! 15: ! 16: chdir(SDIR); ! 17: ! 18: fd = ipcopen(ipcpath(argv[1], "dk", "dist"), "heavy bsdauth"); ! 19: ! 20: /* when connecting to a TCP host, soak up the initial NUL byte that ! 21: the bsdauth option ought to have eaten for us. (lynch presotto) */ ! 22: if (strncmp(ipcpath(argv[1], "dk", "dist"), "/cs/tcp!", 8) == 0) ! 23: read(fd, &ignore, 1); ! 24: ! 25: if (fd < 0) { ! 26: perror(argv[1]); ! 27: return 1; ! 28: } ! 29: ! 30: write(fd, argv[2], strlen(argv[2]) + 1); ! 31: ! 32: if (strchr(argv[3], 'i')) ! 33: dup2(fd, 0); ! 34: if (strchr(argv[3], 'o')) ! 35: dup2(fd, 1); ! 36: close(fd); ! 37: execv(argv[4], &argv[4]); ! 38: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.