Annotation of coherent/a/usr/bob/uusrc/modemcap/mdial.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *  mdial.c
        !             3:  *
        !             4:  *  Implement modem dialing.
        !             5:  */
        !             6: 
        !             7: #include <stdio.h>
        !             8: #include <signal.h>
        !             9: #include "modemcap.h"
        !            10: #include "dial.h"
        !            11: #include "alarm.h"
        !            12: 
        !            13: char   modembuf[BUFSIZ];
        !            14: 
        !            15: mdial(telno, fd)
        !            16: char *telno;
        !            17: int fd;
        !            18: {
        !            19:        register char *cp, *mp;
        !            20:        char ch;
        !            21:        int len;
        !            22: 
        !            23:        if ( !DI || !AS )
        !            24:                return(merrno = M_A_PROB);
        !            25: 
        !            26:        len = strlen(CS)+strlen(DS)+strlen(telno)+strlen(DE)+strlen(CE);
        !            27:        if ( len > (BUFSIZ-2) ) {
        !            28:                merrno = M_DEV_TEL;
        !            29:                goto exitfn;
        !            30:        }
        !            31:        sprintf(modembuf, "%s%s%s%s%s", CS, DS, telno, DE, CE);
        !            32:        SETALRM(30);
        !            33:        if ( (write(fd, modembuf, len=strlen(modembuf)) != len) || timedout ) {
        !            34:                merrno = M_D_HUNG;
        !            35:                goto exitfn;
        !            36:        }
        !            37: 
        !            38:        if ( CO == NULL )
        !            39:                goto exitfn;
        !            40: 
        !            41:        SETALRM( TT ? CONNECTTIME: (CONNECTTIME + strlen(telno)/2) );
        !            42: 
        !            43:        mp = modembuf;
        !            44:        for (cp=CO; *cp; ) {
        !            45:                if ( (read(fd, &ch, 1) != 1) || timedout ||
        !            46:                     (mp >= &modembuf[BUFSIZ-1]) ) {
        !            47:                        *mp = '\0';
        !            48:                        merrno = (mp!=modembuf) ? M_A_PROB: M_NO_ANS;
        !            49:                        goto exitfn;
        !            50:                }
        !            51:                *mp++ = ch;
        !            52:                cp = (*cp == ch) ? cp+1: CO;
        !            53:        }
        !            54:        *mp = '\0';
        !            55: 
        !            56: exitfn:
        !            57:        CLRALRM();
        !            58:        return( merrno );
        !            59: }

unix.superglobalmegacorp.com

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