Annotation of 43BSD/usr.bin/uucp/aculib/df12.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)df12.c     4.1 (Berkeley) 4/3/85";
        !             3: #endif
        !             4: 
        !             5: #include "../condevs.h"
        !             6: 
        !             7: #ifdef DF112
        !             8: /*
        !             9:  *     df12popn(telno, flds, dev) connect to df12 modem (pulse call)
        !            10:  *     df12topn(telno, flds, dev) connect to df12 modem (tone call)
        !            11:  *     char *flds[], *dev[];
        !            12:  *
        !            13:  *     return codes:
        !            14:  *             >0  -  file number  -  ok
        !            15:  *             CF_DIAL,CF_NODEV  -  failed
        !            16:  */
        !            17: 
        !            18: df12popn (telno, flds, dev)
        !            19: char   *telno,
        !            20:        *flds[];
        !            21: struct Devices *dev;
        !            22: {
        !            23:     return df12opn (telno, flds, dev, 0);
        !            24: }
        !            25: 
        !            26: df12topn (telno, flds, dev)
        !            27: char   *telno,
        !            28:        *flds[];
        !            29: struct Devices *dev;
        !            30: {
        !            31:     return df12opn (telno, flds, dev, 1);
        !            32: }
        !            33: 
        !            34: /* ARGSUSED */
        !            35: df12opn (telno, flds, dev, toneflag)
        !            36: char   *telno;
        !            37: char   *flds[];
        !            38: struct Devices *dev;
        !            39: int     toneflag;
        !            40: {
        !            41:     int     phindex, dh = -1;
        !            42:     extern  errno;
        !            43:     char    dcname[20], newphone[64];
        !            44: 
        !            45:     sprintf (dcname, "/dev/%s", dev -> D_line);
        !            46:     DEBUG (4, "dc - %s\n", dcname);
        !            47:     if (setjmp (Sjbuf))
        !            48:     {
        !            49:        logent (dcname, "TIMEOUT");
        !            50:        if (dh >= 0)
        !            51:            close (dh);
        !            52:        return CF_DIAL;
        !            53:     }
        !            54:     signal (SIGALRM, alarmtr);
        !            55:     getnextfd ();
        !            56:     alarm (10);
        !            57:     dh = open (dcname, 2);/* read/write */
        !            58:     alarm (0);
        !            59: 
        !            60:  /* modem is open */
        !            61: 
        !            62:  /* First, adjust our phone number string.  These modems don't 
        !            63:   * like any characters but digits and "=" signs (for delay)
        !            64:   */
        !            65:     for (phindex = 0; *telno; telno++)
        !            66:     {
        !            67:        if (*telno == '=' || (*telno >= '0' && *telno <= '9'))
        !            68:            newphone[phindex++] = *telno;
        !            69:        if (phindex == 64)
        !            70:        {
        !            71:            logent (dcname, "Phone number too long");
        !            72:            close (dh);
        !            73:            return CF_DIAL;
        !            74:        }
        !            75:     }
        !            76:     newphone[phindex] = '\0';
        !            77:     next_fd = -1;
        !            78:     if (dh >= 0)
        !            79:     {
        !            80:        fixline (dh, dev -> D_speed);
        !            81:        if (dochat (dev, flds, dh))
        !            82:        {
        !            83:            logent (dcname, "CHAT FAILED");
        !            84:            close (dh);
        !            85:            return CF_DIAL;
        !            86:        }
        !            87:        slowrite (dh, "\02");
        !            88:        if (expect ("Ready\r\n", dh) != 0)
        !            89:        {
        !            90:            DEBUG (4, "Didn't get 'Ready' response.\n", NULL);
        !            91:            logent (dcname, "Modem not responding");
        !            92:            close (dh);
        !            93:            return CF_DIAL;
        !            94:        }
        !            95:        DEBUG (4, "Got 'Ready' response\n", NULL);
        !            96:        DEBUG (7, "Writing control select flag %c\n", toneflag ? 'T' : 'P');
        !            97:        slowrite (dh, toneflag ? "T" : "P");
        !            98:        DEBUG (4, "Writing telephone number %s\n", newphone);
        !            99:        slowrite (dh, newphone);
        !           100:        DEBUG (7, "Telephone number written\n", NULL);
        !           101:        slowrite (dh, "#");
        !           102:        DEBUG (7, "Writing # sign\n", NULL);
        !           103: 
        !           104:        if (expect ("Attached\r\n", dh) != 0)
        !           105:        {
        !           106:            logent (dcname, "No carrier");
        !           107:            strcpy (devSel, dev -> D_line);
        !           108:            df12cls (dh);
        !           109:            return CF_DIAL;
        !           110:        }
        !           111: 
        !           112:     }
        !           113:     if (dh < 0)
        !           114:     {
        !           115:        logent (dcname, "CAN'T OPEN");
        !           116:        return CF_NODEV;
        !           117:     }
        !           118:     else
        !           119:     {
        !           120:        DEBUG (4, "df12 ok\n", CNULL);
        !           121:        return dh;
        !           122:     }
        !           123: }
        !           124: 
        !           125: df12cls (fd)
        !           126: int     fd;
        !           127: {
        !           128:     char    dcname[20];
        !           129:     struct sgttyb   hup,
        !           130:                     sav;
        !           131: 
        !           132:     if (fd > 0)
        !           133:     {
        !           134:        sprintf (dcname, "/dev/%s", devSel);
        !           135:        DEBUG (4, "Hanging up fd = %d\n", fd);
        !           136:     /* 
        !           137:      * code to drop DTR -- change to 0 baud then back to default.
        !           138:      */
        !           139:        gtty (fd, &hup);
        !           140:        gtty (fd, &sav);
        !           141:        hup.sg_ispeed = B0;
        !           142:        hup.sg_ospeed = B0;
        !           143:        stty (fd, &hup);
        !           144:        sleep (2);
        !           145:        stty (fd, &sav);
        !           146:     /* 
        !           147:      * now raise DTR -- close the device & open it again.
        !           148:      */
        !           149:        sleep (2);
        !           150:        close (fd);
        !           151:        sleep (2);
        !           152:        delock (devSel);
        !           153:     }
        !           154: }
        !           155: 
        !           156: #endif DF112

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.