Annotation of researchv10no/cmd/odist/sysv/dispatch.c, revision 1.1.1.1

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 <sys/types.h>
                      6: #include <sys/sockets.h>
                      7: #include <netinet/in.h>
                      8: #include <netdb.h>
                      9: #include <string.h>
                     10: #include "../paths.h"
                     11: 
                     12: int
                     13: main(int argc, char *argv[])
                     14: {
                     15:        char c, d;
                     16:        char *args[3];
                     17:        int fd;
                     18: 
                     19:        if (chdir(LDIR) < 0)
                     20:                return 1;
                     21: 
                     22:        /* TODO: at this point, perform rshd style authentication check,
                     23:           set the appropriate user id, and all that.  See what kind of
                     24:           args we can get from inetd.  */
                     25: 
                     26:        if (read(0, &c, 1) != 1)
                     27:                return 1;
                     28:        do
                     29:                if (read(0, &d, 1) != 1)
                     30:                        return 1;
                     31:        while (d);
                     32: 
                     33:        fd = open("/dev/null", 1);
                     34:        dup2(fd, 2);
                     35:        if (fd > 2)
                     36:                close(fd);
                     37: 
                     38:        switch (c) {
                     39:        case 's':
                     40:                args[0] = "showq";
                     41:                execv("showq", args);
                     42:                break;
                     43:        case 't':
                     44:                args[0] = "transmit";
                     45:                execv("transmit", args);
                     46:                break;
                     47:        case 'n':
                     48:                args[0] = "notice";
                     49:                execv("notice", args);
                     50:                break;
                     51:        }
                     52: 
                     53:        return 1;
                     54: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.