home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / uucp / uupoll068.lha / source / modem.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-03  |  3.0 KB  |  137 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. #define DEFAULTNAME "default"
  16.  
  17. int setupmodem(char *cpSetup, char *cpLsys, char *cpHost)
  18. {
  19.     int rc;
  20.     FILE *fpSetup = NULL;
  21.     char *cpBuf = NULL;
  22.     long wSetup;
  23.     struct SerialHandle *serialhandle = NULL;
  24.     LB *lb = NULL;
  25.     int i, j;
  26.     int bps;
  27.     char *cp;
  28.     char *cpCur;
  29.  
  30.     if ((fpSetup = fopen(cpSetup, "r")) == NULL)
  31.         CU(FALSE);
  32.     if (fseek(fpSetup, 0L, SEEK_END) == -1L)
  33.         CU(FALSE);
  34.     if ((wSetup = ftell(fpSetup)) == -1L)
  35.         CU(FALSE);
  36.     if (fseek(fpSetup, 0L, SEEK_SET) == -1L)
  37.         CU(FALSE);
  38.     if ((cpBuf = (char *)malloc(wSetup)) == NULL)
  39.         CU(FALSE);
  40.     if ((fread(cpBuf, wSetup, 1, fpSetup) != 1) && ferror(fpSetup))
  41.         CU(FALSE);
  42.     if ((wSetup = cnvbuf(cpBuf, cpBuf+wSetup-1)) == 0)
  43.         CU(FALSE);
  44.     if ((lb = lbopen(cpBuf, cpBuf+wSetup-1)) == NULL)
  45.         CU(FALSE);
  46.     if (lbseek(lb, 0, LBSEEK_SET) == NULL)
  47.         CU(FALSE);
  48.     if (wSetup == 0)
  49.         CU(FALSE);
  50.     if ((serialhandle = CreateSerialHandle(0L, 0L)) == NULL)
  51.         CU(FALSE);
  52.     if ((bps = lsysbps(cpLsys, cpHost)) == 0)
  53.         CU(FALSE);
  54.     if (!SetSerialParameters(serialhandle, bps, 0L))
  55.         CU(FALSE);
  56.  
  57.     do {
  58.         if ((lb->lb_wLnCur != 0) && (*(lb->lb_cpLnCur) != '#')) {
  59.             for (i=0, cp = lb->lb_cpLnCur; i < lb->lb_wLnCur; i++, cp++)
  60.                 if (*cp == ':')
  61.                     break;
  62.             if ((*cp == ':') && (i == strlen(cpHost)))
  63.                 if (!(strnicmp(lb->lb_cpLnCur, cpHost, i))) {
  64.  
  65.                     if (*(cp+1) == NL)
  66.                         CU(TRUE);
  67.  
  68.                     for (j = 0; j < 3; j++) {
  69.                         if (WriteSerial(serialhandle, "+", 1) != 1)
  70.                             CU(FALSE);
  71.                         Delay(10); /* 10*1/50 sec = 1/5 sec */
  72.                     }
  73.  
  74.                     for ( ; ; ) {
  75.                         cpCur = ++cp;
  76.                         while (*cp != ',' && *cp != NL)
  77.                             ++cp;
  78.                         WriteSerial(serialhandle, cpCur, cp - cpCur);
  79.                         WriteSerial(serialhandle, "\r", 1);
  80.                         Delay(5); /* 5*1/50 sec = 1/10 sec */
  81.                         if (*cp == NL)
  82.                             CU(TRUE);
  83.                     }
  84.                 }
  85.         }
  86.     } while (lbseek(lb, 1, LBSEEK_CUR));
  87.  
  88.     if (lbseek(lb, 0, LBSEEK_SET) == NULL)
  89.         CU(FALSE);
  90.     cpHost = DEFAULTNAME;
  91.  
  92.     do {
  93.         if ((lb->lb_wLnCur != 0) && (*(lb->lb_cpLnCur) != '#')) {
  94.             for (i=0, cp = lb->lb_cpLnCur; i < lb->lb_wLnCur; i++, cp++)
  95.                 if (*cp == ':')
  96.                     break;
  97.             if ((*cp == ':') && (i == strlen(cpHost)))
  98.                 if (!(strnicmp(lb->lb_cpLnCur, cpHost, i))) {
  99.  
  100.                     if (*(cp+1) == NL)
  101.                         CU(TRUE);
  102.  
  103.                     for (j = 0; j < 3; j++) {
  104.                         if (WriteSerial(serialhandle, "+", 1) != 1)
  105.                             CU(FALSE);
  106.                         Delay(10); /* 10*1/50 sec = 1/5 sec */
  107.                     }
  108.  
  109.                     for ( ; ; ) {
  110.                         cpCur = ++cp;
  111.                         while (*cp != ',' && *cp != NL)
  112.                             ++cp;
  113.                         WriteSerial(serialhandle, cpCur, cp - cpCur);
  114.                         WriteSerial(serialhandle, "\r", 1);
  115.                         Delay(5); /* 5*1/50 sec = 1/10 sec */
  116.                         if (*cp == NL)
  117.                             CU(TRUE);
  118.                     }
  119.                 }
  120.         }
  121.     } while (lbseek(lb, 1, LBSEEK_CUR));
  122.  
  123.     rc = FALSE;
  124.  
  125. CUS:
  126.     if (lb)
  127.         lbfree(lb);
  128.     if (serialhandle)
  129.         DeleteSerialHandle(serialhandle);
  130.     if (fpSetup)
  131.         fclose(fpSetup);
  132.     if (cpBuf)
  133.         free(cpBuf);
  134.     return rc;
  135. }
  136.  
  137.