# 2.11BSD#431 - /usr/src/usr.bin/tip/aculib/dn11.c

##### Functions

    alarmtr           X
    dn_abort          X
    dn_dialer         X
    dn_disconnect     X

       1: /*
       2:  * Copyright (c) 1983 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #ifndef lint
       8: static char sccsid[] = "@(#)dn11.c	5.1 (Berkeley) 4/30/85";
       9: #endif not lint
      10:
      11: /*
      12:  * Routines for dialing up on DN-11
      13:  */
      14: #include "tip.h"
      15:
      16: int dn_abort(), alarmtr();
      17: static jmp_buf jmpbuf;
      18: static int child = -1, dn;
      19:
      20: dn_dialer(num, acu)
      21:     char *num, *acu;
      22: {
      23:     extern errno;
      24:     char *p, *q, phone[40];
      25:     int lt, nw, connected = 1;
      26:     register int timelim;
      27:
      28:     if (boolean(value(VERBOSE)))
      29:         printf("\nstarting call...");
      30:     if ((dn = open(acu, 1)) < 0) {
      31:         if (errno == EBUSY)
      32:             printf("line busy...");
      33:         else
      34:             printf("acu open error...");
      35:         return (0);
      36:     }
      37:     if (setjmp(jmpbuf)) {
      38:         kill(child, SIGKILL);
      39:         close(dn);
      40:         return (0);
      41:     }
      42:     signal(SIGALRM, alarmtr);
      43:     timelim = 5 * strlen(num);
      44:     alarm(timelim < 30 ? 30 : timelim);
      45:     if ((child = fork()) == 0) {
      46:         /*
      47: 		 * ignore this stuff for aborts
      48: 		 */
      49:         signal(SIGALRM, SIG_IGN);
      50:         signal(SIGINT, SIG_IGN);
      51:         signal(SIGQUIT, SIG_IGN);
      52:         sleep(2);
      53:         nw = write(dn, num, lt = strlen(num));
      54:         exit(nw != lt);
      55:     }
      56:     /*
      57: 	 * open line - will return on carrier
      58: 	 */
      59:     if ((FD = open(DV, 2)) < 0) {
      60:         if (errno == EIO)
      61:             printf("lost carrier...");
      62:         else
      63:             printf("dialup line open failed...");
      64:         alarm(0);
      65:         kill(child, SIGKILL);
      66:         close(dn);
      67:         return (0);
      68:     }
      69:     alarm(0);
      70:     ioctl(dn, TIOCHPCL, 0);
      71:     signal(SIGALRM, SIG_DFL);
      72:     while ((nw = wait(&lt)) != child && nw != -1)
      73:         ;
      74:     fflush(stdout);
      75:     close(dn);
      76:     if (lt != 0) {
      77:         close(FD);
      78:         return (0);
      79:     }
      80:     return (1);
      81: }
      82:
      83: alarmtr()
      84: {
      85:
      86:     alarm(0);
      87:     longjmp(jmpbuf, 1);
      88: }
      89:
      90: /*
      91:  * Insurance, for some reason we don't seem to be
      92:  *  hanging up...
      93:  */
      94: dn_disconnect()
      95: {
      96:
      97:     sleep(2);
      98:     if (FD > 0)
      99:         ioctl(FD, TIOCCDTR, 0);
     100:     close(FD);
     101: }
     102:
     103: dn_abort()
     104: {
     105:
     106:     sleep(2);
     107:     if (child > 0)
     108:         kill(child, SIGKILL);
     109:     if (dn > 0)
     110:         close(dn);
     111:     if (FD > 0)
     112:         ioctl(FD, TIOCCDTR, 0);
     113:     close(FD);
     114: }

#### Defined functions

alarmtr defined in line 83; used 2 times

- in line 16, 42

dn_abort defined in line 103; used 1 times

- in line 16

dn_dialer defined in line 20; never used
dn_disconnect defined in line 94; never used

#### Defined variables

child defined in line 18; used 6 times

- in line 38, 45, 65, 72, 107-108(2)

sccsid defined in line 8; never used

Last modified: 1985-04-30 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1348 |