|
|
1.1 ! root 1: /* usage: dispatch <ipc args> */ ! 2: /* TODO: connect input to /dev/null if peer wants no output, ! 3: connect output to logfile if peer wants no input. */ ! 4: ! 5: #include <ipc.h> ! 6: #include <string.h> ! 7: #include "../paths.h" ! 8: ! 9: int ! 10: main(int argc, char *argv[]) ! 11: { ! 12: char c, d; ! 13: char *args[3]; ! 14: int fd; ! 15: ! 16: if (chdir(LDIR) < 0) ! 17: return 1; ! 18: ! 19: (args[1] = strchr(argv[1], '=')) && ++args[1]; ! 20: (args[2] = strchr(argv[2], '=')) && ++args[2]; ! 21: args[3] = 0; ! 22: ! 23: if (read(0, &c, 1) != 1) ! 24: return 1; ! 25: do ! 26: if (read(0, &d, 1) != 1) ! 27: return 1; ! 28: while (d); ! 29: ! 30: fd = open("/dev/null", 1); ! 31: dup2(fd, 2); ! 32: if (fd > 2) ! 33: close(fd); ! 34: ! 35: switch (c) { ! 36: case 's': ! 37: args[0] = "showq"; ! 38: execv("showq", args); ! 39: break; ! 40: case 't': ! 41: args[0] = "transmit"; ! 42: execv("transmit", args); ! 43: break; ! 44: case 'n': ! 45: args[0] = "notice"; ! 46: execv("notice", args); ! 47: break; ! 48: } ! 49: ! 50: return 1; ! 51: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.