/************************************************************* * File: mon/transp.c * Purpose: Part of core Monitor * Author: Phil Bunce (pjb@carmel.com) * Revision History: * 970304 Start of revision history */ #include #include #include #define STDOUT 1 Optdesc tr_opts[] = { {"[-2][dev]","transparent mode"}, {"-2","two-port mode"}, {"dev","use device dev"}, {0}}; /************************************************************* * transp(ac,av) * the 'tr' command */ transp(ac,av) int ac; char *av[]; { int fd,n,i,j,auxA,auxB,twoflg; jmp_buf intrsave; char *hostport,buf[80],abortch,*trabort,*auxport,auxportB[10]; struct termio tbuf,consave,hostsave; trabort = getMonEnv("trabort"); abortch = str2cc(trabort); if (abortch == 0) { printf("tr: error: trabort not set\n"); return; } auxport = 0; twoflg = 0; for (i=1;i 0) { n = read(STDIN,buf,n); if (strchr(buf,abortch)) break; #ifdef PMCC if (ioctl(fd,TXRDY,0)) write(fd,buf,n); #endif } n = ioctl_fionread(fd); if (n > 0) { n = read(fd,buf,n); write(STDOUT,buf,n); } if (twoflg) { n = ioctl_fionread(auxA); if (n > 0) { n = read(auxA,buf,n); write(auxB,buf,n); } n = ioctl_fionread(auxB); if (n > 0) { n = read(auxB,buf,n); write(auxA,buf,n); } } } ioctl(STDIN,TCSETAF,&consave); ioctl(fd,TCSETAF,&hostsave); #if 0 ioctl(STDIN,SETINTR,intrsave); #endif }