|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.