home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume13 / modemcap / initmodem.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-01-31  |  1004 b   |  53 lines

  1. #include "modemcap.h"
  2.  
  3. static    char    f_names[] = "asditthc";
  4. static    char    *f_caps[] = {
  5.     &AS, &DI, &TT, &HC
  6. };
  7.  
  8. static    char    i_names[] = "bdblidad";
  9. static    int    *i_caps[] = {
  10.     &BD, &BL, &ID, &AD
  11. };
  12.  
  13. static    char    c_names[] = "cscedsdeiscoclathu";
  14. static    char    **c_caps[] = {
  15.     &CS, &CE, &DS, &DE, &IS, &CO, &CL, &AT, &HU
  16. };
  17.  
  18. initmodem (modem, fd)
  19. char    *modem;                    /* name of modem        */
  20. int    fd;                    /* channel to modem        */
  21. {
  22.     static    char    mcapbuf[1024];
  23.     static    char    area[1024];
  24.     char    *ap = area;
  25.     register char    *cp;
  26.     register int    i, j;
  27.     register char    *s;
  28.     char    *mgetstr ();
  29.  
  30.     if (mgetent (mcapbuf, modem) != 1)
  31.         return (0);
  32.  
  33.     for (i = 0, cp = f_names;*cp;i++, cp += 2)
  34.         *(f_caps[i]) = mgetflag (cp);
  35.  
  36.     for (i = 0, cp = i_names;*cp;i++, cp += 2) {
  37.         j = mgetnum (cp);
  38.         if (j >= 0)
  39.             *(i_caps[i]) = j;
  40.         else
  41.             *(i_caps[i]) = 0;
  42.     }
  43.     for (i = 0, cp = c_names;*cp;i++, cp += 2)
  44.         *(c_caps[i]) = mgetstr (cp, &ap);
  45.  
  46.     if (IS != (char *) 0) {
  47.         write (fd, IS, strlen (IS));
  48.         if (ID)
  49.             sleep (ID);
  50.     }
  51.     return (1);
  52. }
  53.