Annotation of coherent/a/usr/bob/uusrc/modemcap/mdial.c, revision 1.1.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.