home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / uucp / uupoll068.lha / misc / uupoll067.lha / src / modem.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-16  |  2.2 KB  |  101 lines

  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <exec/types.h>
  6. #include <proto/exec.h>
  7. #include <proto/dos.h>
  8. #include <devices/serial.h>
  9. #include "defines.h"
  10. #include "cus.h"
  11. #include "serio.h"
  12. #include "lbio.h"
  13. #include "proto.h"
  14.  
  15.  
  16. int setupmodem(char *cpSetup, char *cpLsys, char *cpHost)
  17. {
  18.     int rc;
  19.     FILE *fpSetup = NULL;
  20.     char *cpBuf = NULL;
  21.     long wSetup;
  22.     struct SerialHandle *serialhandle = NULL;
  23.     LB *lb = NULL;
  24.     int i, j;
  25.     int bps;
  26.     char *cp;
  27.     char *cpCur;
  28.  
  29.     if ((fpSetup = fopen(cpSetup, "r")) == NULL)
  30.         CU(FALSE);
  31.     if (fseek(fpSetup, 0L, SEEK_END) == -1L)
  32.         CU(FALSE);
  33.     if ((wSetup = ftell(fpSetup)) == -1L)
  34.         CU(FALSE);
  35.     if (fseek(fpSetup, 0L, SEEK_SET) == -1L)
  36.         CU(FALSE);
  37.     if ((cpBuf = (char *)malloc(wSetup)) == NULL)
  38.         CU(FALSE);
  39.     if ((fread(cpBuf, wSetup, 1, fpSetup) != 1) && ferror(fpSetup))
  40.         CU(FALSE);
  41.     if ((wSetup = cnvbuf(cpBuf, cpBuf+wSetup-1)) == 0)
  42.         CU(FALSE);
  43.     if ((lb = lbopen(cpBuf, cpBuf+wSetup-1)) == NULL)
  44.         CU(FALSE);
  45.     if (lbseek(lb, 0, LBSEEK_SET) == NULL)
  46.         CU(FALSE);
  47.     if (wSetup == 0)
  48.         CU(FALSE);
  49.     if ((serialhandle = CreateSerialHandle(0L, 0L)) == NULL)
  50.         CU(FALSE);
  51.     if ((bps = lsysbps(cpLsys, cpHost)) == 0)
  52.         CU(FALSE);
  53.     if (!SetSerialParameters(serialhandle, bps, 0L))
  54.         CU(FALSE);
  55.  
  56.     do {
  57.         if ((lb->lb_wLnCur != 0) && (*(lb->lb_cpLnCur) != '#')) {
  58.             for (i=0, cp = lb->lb_cpLnCur; i < lb->lb_wLnCur; i++, cp++)
  59.                 if (*cp == ':')
  60.                     break;
  61.             if ((*cp == ':') && (i == strlen(cpHost)))
  62.                 if (!(strnicmp(lb->lb_cpLnCur, cpHost, i))) {
  63.  
  64.                     if (*(cp+1) == NL)
  65.                         CU(TRUE);
  66.  
  67.                     for (j = 0; j < 3; j++) {
  68.                         if (WriteSerial(serialhandle, "+", 1) != 1)
  69.                             CU(FALSE);
  70.                         Delay(10); /* 10*1/50 sec = 1/5 sec */
  71.                     }
  72.  
  73.                     for ( ; ; ) {
  74.                         cpCur = ++cp;
  75.                         while (*cp != ',' && *cp != NL)
  76.                             ++cp;
  77.                         WriteSerial(serialhandle, cpCur, cp - cpCur);
  78.                         WriteSerial(serialhandle, "\r", 1);
  79.                         Delay(5); /* 5*1/50 sec = 1/10 sec */
  80.                         if (*cp == NL)
  81.                             CU(TRUE);
  82.                     }
  83.                 }
  84.         }
  85.     } while (lbseek(lb, 1, LBSEEK_CUR));
  86.  
  87.     rc = FALSE;
  88.  
  89. CUS:
  90.     if (lb)
  91.         lbfree(lb);
  92.     if (serialhandle)
  93.         DeleteSerialHandle(serialhandle);
  94.     if (fpSetup)
  95.         fclose(fpSetup);
  96.     if (cpBuf)
  97.         free(cpBuf);
  98.     return rc;
  99. }
  100.  
  101.