Annotation of researchv10no/cmd/odist/sysv/dispatch.c, revision 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.