Annotation of 43BSD/contrib/X/xcons/xcons.c, revision 1.1

1.1     ! root        1: #include <X/mit-copyright.h>
        !             2: /* Copyright 1986, Massachusetts Institute of Technology */
        !             3: 
        !             4: #ifndef lint
        !             5: static char *rcsid_xcons_c = "$Header: xcons.c,v 10.1 86/02/02 13:10:50 jg Exp $";
        !             6: #endif lint
        !             7: 
        !             8: #include <stdio.h>
        !             9: #include <fcntl.h>
        !            10: #include <sys/ioctl.h>
        !            11: #include <sys/errno.h>
        !            12: 
        !            13: extern int errno;
        !            14: 
        !            15: main(argc, argv)
        !            16:     int argc;
        !            17:     char **argv;
        !            18: {
        !            19:        char fromdev[30], todev[30];
        !            20:        int from, to, n;
        !            21:        char buf[2048];
        !            22: 
        !            23:        if (argc != 3)
        !            24:                exit(1);
        !            25:        strcpy(fromdev, "/dev/");
        !            26:        strcat(fromdev, argv[2]);
        !            27:        strcpy(todev, "/dev/");
        !            28:        strcat(todev, argv[1]);
        !            29:        if (argc != 3 || (from = open(fromdev, O_RDONLY, 0)) < 0)
        !            30:                exit(1);
        !            31:        while (1) {
        !            32:                if ((n = read(from, buf, sizeof(buf))) <= 0)
        !            33:                        exit(1);
        !            34:                if (fcntl(from, F_SETFL, FNDELAY) < 0)
        !            35:                        exit(1);
        !            36:                /* we only open the tty when we need to, because it won't
        !            37:                 * be preserved across logins */
        !            38:                if ((to = open(todev, O_WRONLY, 0)) < 0)
        !            39:                        exit(1);
        !            40:                while (n > 0) {
        !            41:                        write(to, buf, n);
        !            42:                        n = read(from, buf, n);
        !            43:                }
        !            44:                close(to);
        !            45:                if (errno != EWOULDBLOCK || fcntl(from, F_SETFL, 0) < 0)
        !            46:                        exit(1);
        !            47:        }
        !            48: }

unix.superglobalmegacorp.com

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