home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 341b.lha / uucp1_v1.03d / src / lib / config.c < prev    next >
C/C++ Source or Header  |  1990-01-28  |  2KB  |  80 lines

  1.  
  2. /*
  3.  *  CONFIG.C
  4.  *
  5.  *  (C) Copyright 1989-1990 by Matthew Dillon,  All Rights Reserved.
  6.  *
  7.  *  Extract fields from UULIB:Config
  8.  */
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <config.h>
  13.  
  14. #define CTLZ    ('z'&0x1F)
  15.  
  16. static char *ConfBuf = NULL;
  17.  
  18. char *
  19. FindConfig(field)
  20. char *field;
  21. {
  22.     char *str;
  23.     short flen = strlen(field);
  24.  
  25.     if (ConfBuf == NULL) {
  26.     FILE *fi = fopen("UULIB:Config", "r");
  27.     if (fi) {
  28.         long buflen;
  29.         fseek(fi, 0L, 2);
  30.         buflen = ftell(fi);
  31.         fseek(fi, 0L, 0);
  32.         if (buflen > 0 && (ConfBuf = malloc(buflen + 1))) {
  33.         fread(ConfBuf, buflen, 1, fi);
  34.         ConfBuf[buflen] = CTLZ;     /*    can't use \0 */
  35.         for (str = ConfBuf; *str; ++str) {
  36.             char *bup;
  37.             if (*str == '\n') {     /*  make separate strs */
  38.             *str = 0;
  39.                         /*    remove white space at end */
  40.             for (bup = str - 1; bup >= ConfBuf && (*bup == ' ' || *bup == 9); --bup)
  41.                 *bup = 0;
  42.             }
  43.         }
  44.         } else {
  45.         ConfBuf = NULL;
  46.         }
  47.     }
  48.     }
  49.     if (ConfBuf == NULL)
  50.     return(NULL);
  51.     /*
  52.      *    Search ConfBuf for Field<space/tab>
  53.      */
  54.  
  55.     for (str = ConfBuf; *str != CTLZ; str += strlen(str) + 1) {
  56.     if (*str == 0)
  57.         continue;
  58.     if (strncmp(str, field, flen) == 0 && (str[flen] == ' ' || str[flen] == '\t')) {
  59.         str += flen;
  60.         while (*str == ' ' || *str == 9)
  61.         ++str;
  62.         return(str);
  63.     }
  64.     }
  65.     return(NULL);
  66. }
  67.  
  68. char *
  69. GetConfig(field, def)
  70. char *field;
  71. char *def;
  72. {
  73.     char *result = FindConfig(field);
  74.  
  75.     if (result == NULL)
  76.     result = def;
  77.     return(result);
  78. }
  79.  
  80.