1*13920Sedward #ifndef lint 2*13920Sedward static char *sccsid = "@(#)main.c 1.1 83/07/12"; 3*13920Sedward #endif 4*13920Sedward 5*13920Sedward #include "ww.h" 6*13920Sedward #include <signal.h> 7*13920Sedward 8*13920Sedward struct ww *w1, *w2; 9*13920Sedward 10*13920Sedward main() 11*13920Sedward { 12*13920Sedward register n; 13*13920Sedward register char *p; 14*13920Sedward int wwchild(); 15*13920Sedward int imask; 16*13920Sedward char buf[512]; 17*13920Sedward char escape = 0; 18*13920Sedward 19*13920Sedward w1 = wwopen(12, 80, 0, 0); 20*13920Sedward w2 = wwopen(12, 80, 12, 0); 21*13920Sedward wwsetcurrent(w1); 22*13920Sedward noecho(); 23*13920Sedward crmode(); 24*13920Sedward (void) signal(SIGCHLD, wwchild); 25*13920Sedward switch (wwfork(w1)) { 26*13920Sedward case -1: 27*13920Sedward perror("wwfork"); 28*13920Sedward goto bad; 29*13920Sedward case 0: 30*13920Sedward wwexecl(w1, "/bin/csh", "csh", 0); 31*13920Sedward perror("wwexecl(w1)"); 32*13920Sedward goto bad; 33*13920Sedward } 34*13920Sedward switch (wwfork(w2)) { 35*13920Sedward case -1: 36*13920Sedward perror("wwfork"); 37*13920Sedward goto bad; 38*13920Sedward case 0: 39*13920Sedward wwexecl(w2, "/bin/csh", "csh", 0); 40*13920Sedward perror("wwexecl(w2)"); 41*13920Sedward goto bad; 42*13920Sedward } 43*13920Sedward for (;;) { 44*13920Sedward wwflushall(); 45*13920Sedward if (!wwhaschildren()) 46*13920Sedward break; 47*13920Sedward imask = 1<<0; 48*13920Sedward while (wwforce(&imask) < 0) 49*13920Sedward ; 50*13920Sedward if (imask & 1<<0) { 51*13920Sedward n = read(0, buf, sizeof buf); 52*13920Sedward for (p = buf; n-- > 0; p++) { 53*13920Sedward *p &= 0x7f; 54*13920Sedward if (escape) { 55*13920Sedward escape = 0; 56*13920Sedward switch (*p) { 57*13920Sedward case '\\': 58*13920Sedward write(_wwcurrent->ww_pty, p, 1); 59*13920Sedward break; 60*13920Sedward case '1': 61*13920Sedward wwsetcurrent(w1); 62*13920Sedward break; 63*13920Sedward case '2': 64*13920Sedward wwsetcurrent(w2); 65*13920Sedward break; 66*13920Sedward default: 67*13920Sedward write(_wwcurrent->ww_pty, 68*13920Sedward "\\", 1); 69*13920Sedward write(_wwcurrent->ww_pty, p, 1); 70*13920Sedward } 71*13920Sedward } else { 72*13920Sedward if (*p == '\\') 73*13920Sedward escape++; 74*13920Sedward else 75*13920Sedward write(_wwcurrent->ww_pty, p, 1); 76*13920Sedward } 77*13920Sedward } 78*13920Sedward } 79*13920Sedward } 80*13920Sedward bad: 81*13920Sedward echo(); 82*13920Sedward nocrmode(); 83*13920Sedward wwend(); 84*13920Sedward return 0; 85*13920Sedward } 86