home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / uucp / uupoll068.lha / source / lsys.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-03  |  2.1 KB  |  114 lines

  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6. #include <time.h>
  7. #include "cus.h"
  8. #include "defines.h"
  9. #include "lbio.h"
  10.  
  11. int inlsys(char *lsysfile, char *hostname)
  12. {
  13.     int rc;
  14.     FILE *fp = NULL;
  15.     char *buf = NULL;
  16.     long len;
  17.     LB *lb = NULL;
  18.     int i;
  19.     char *p;
  20.  
  21.     if ((fp = fopen(lsysfile, "r")) == NULL)
  22.         CU(ERR);
  23.     if (fseek(fp, 0L, SEEK_END) == -1L)
  24.         CU(ERR);
  25.     if ((len = ftell(fp)) == -1L)
  26.         CU(ERR);
  27.     if (fseek(fp, 0L, SEEK_SET) == -1L)
  28.         CU(ERR);
  29.     if ((buf = (char *)malloc(len)) == NULL)
  30.         CU(ERR);
  31.     if ((fread(buf, len, 1, fp) != 1) && ferror(fp))
  32.         CU(ERR);
  33.     if ((lb = lbopen(buf, buf+len-1)) == NULL)
  34.         CU(ERR);
  35.     if (lbseek(lb, 0, LBSEEK_SET) == NULL)
  36.         CU(ERR);
  37.  
  38.     do {
  39.         if ((lb->lb_wLnCur != 0) && (*(lb->lb_cpLnCur) != '#')) {
  40.             for (i=0, p = lb->lb_cpLnCur; i < lb->lb_wLnCur; i++, p++)
  41.                 if (*p == SP)
  42.                     break;
  43.             if ((*p == SP) && (i == strlen(hostname)))
  44.                 if (!(strnicmp(lb->lb_cpLnCur, hostname, i)))
  45.                     CU(TRUE);
  46.         }
  47.     } while (lbseek(lb, 1, LBSEEK_CUR));
  48.  
  49.     rc = FALSE;
  50.  
  51.     CUS:
  52.     if (lb)    lbfree(lb);
  53.     if (fp) fclose(fp);
  54.     if (buf) free(buf);
  55.     return rc;
  56. }
  57.  
  58. int lsysbps(char *cpLsys, char *cpHost)
  59. {
  60.     int rc;
  61.     FILE *fp = NULL;
  62.     char *buf = NULL;
  63.     long len;
  64.     LB *lb = NULL;
  65.     int i;
  66.     char *cp;
  67.     int wHost;
  68.  
  69.     if ((fp = fopen(cpLsys, "r")) == NULL)
  70.         CU(0);
  71.     if (fseek(fp, 0L, SEEK_END) == -1L)
  72.         CU(0);
  73.     if ((len = ftell(fp)) == -1L)
  74.         CU(0);
  75.     if (fseek(fp, 0L, SEEK_SET) == -1L)
  76.         CU(0);
  77.     if ((buf = (char *)malloc(len)) == NULL)
  78.         CU(0);
  79.     if ((fread(buf, len, 1, fp) != 1) && ferror(fp))
  80.         CU(0);
  81.     if ((lb = lbopen(buf, buf+len-1)) == NULL)
  82.         CU(0);
  83.     if (lbseek(lb, 0, LBSEEK_SET) == NULL)
  84.         CU(0);
  85.  
  86.     wHost = strlen(cpHost);
  87.  
  88.     do {
  89.         if (    (lb->lb_wLnCur <= wHost)
  90.             ||    (strnicmp(lb->lb_cpLnCur, cpHost, wHost) != 0)    )
  91.             continue;
  92.         for (i = 0, cp = lb->lb_cpLnCur; cp != NULL; cp = strpbrk(cp, " \t"), i++) {
  93.             if ( (*cp == ' ') || (*cp == '\t') )
  94.                 ++cp;
  95.             if (i >= 3)
  96.                 break;
  97.         }
  98.         CU(atoi(cp));
  99.  
  100.     } while (lbseek(lb, 1, LBSEEK_CUR));
  101.  
  102.     rc = 0;
  103.  
  104.     CUS:
  105.     if (lb)
  106.         lbfree(lb);
  107.     if (buf)
  108.         free(buf);
  109.     if (fp)
  110.         fclose(fp);
  111.     return rc;
  112. }
  113.  
  114.