1*3691Sroot /* dn11.c 4.1 81/05/09 */ 2*3691Sroot /* 3*3691Sroot * Routines for dialing up on DN-11 4*3691Sroot */ 5*3691Sroot #include "tip.h" 6*3691Sroot 7*3691Sroot int dn_abort(); 8*3691Sroot 9*3691Sroot #if DN11 10*3691Sroot dn_dialer(num, acu) 11*3691Sroot char *num, *acu; 12*3691Sroot { 13*3691Sroot extern errno; 14*3691Sroot char *p, *q, b[30]; 15*3691Sroot int child = -1, dn, t, connected = 1; 16*3691Sroot 17*3691Sroot if ((dn = open(acu, 1)) < 0) { 18*3691Sroot if (errno == 6) 19*3691Sroot printf("line busy\n"); 20*3691Sroot return(0); 21*3691Sroot } 22*3691Sroot if ((child = fork()) == -1) { 23*3691Sroot printf("can't fork\n"); 24*3691Sroot return(0); 25*3691Sroot } 26*3691Sroot if (child == 0) { 27*3691Sroot signal(SIGALRM, SIG_IGN); 28*3691Sroot pause(); 29*3691Sroot } 30*3691Sroot sleep(2); 31*3691Sroot /* 32*3691Sroot * copy phone #, assure EON 33*3691Sroot */ 34*3691Sroot for (p = b, q = num; *p = *q; p++, q++) 35*3691Sroot ; 36*3691Sroot if (*(p-1) != '<') { 37*3691Sroot if (*(p-1) != '-') 38*3691Sroot *p++ = '-'; 39*3691Sroot *p++ = '<'; 40*3691Sroot } 41*3691Sroot close(FD); 42*3691Sroot t = p-b; 43*3691Sroot signal(SIGALRM, dn_abort); 44*3691Sroot alarm(5*t); 45*3691Sroot t = write(dn, b, t); 46*3691Sroot alarm(0); 47*3691Sroot if (t < 0) { 48*3691Sroot printf("dn11 write error\n"); 49*3691Sroot connected = 0; 50*3691Sroot goto error; 51*3691Sroot } 52*3691Sroot alarm(40); /* was 5; sometimes missed carrier */ 53*3691Sroot FD = open(DV, 2); 54*3691Sroot alarm(0); 55*3691Sroot if (FD < 0) { 56*3691Sroot if (errno == 4) 57*3691Sroot printf("lost carrier\n"); 58*3691Sroot connected = 0; 59*3691Sroot goto error; 60*3691Sroot } 61*3691Sroot ioctl(FD, TIOCEXCL, 0); 62*3691Sroot ioctl(FD, TIOCHPCL, 0); 63*3691Sroot error: 64*3691Sroot kill(child, SIGKILL); 65*3691Sroot alarm(10); 66*3691Sroot while ((t = wait((int *)NULL)) != -1 && t != child) 67*3691Sroot ; 68*3691Sroot alarm(0); 69*3691Sroot signal(SIGALRM, SIG_DFL); 70*3691Sroot return(connected); 71*3691Sroot } 72*3691Sroot 73*3691Sroot dn_disconnect() { } 74*3691Sroot 75*3691Sroot dn_abort() { } 76*3691Sroot #endif 77