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

  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. #include "defines.h"
  7. #include "cus.h"
  8. #include "proto.h"
  9. #include "lbio.h"
  10.  
  11. char *getfield(char *cpConfigfile, char *cpField, char *cpDestbuf)
  12. {
  13.     FILE *fp = NULL;
  14.     char *buf = NULL;
  15.     LB *lb = NULL;
  16.     long len;
  17.     int nTok;
  18.     char **cppTok;
  19.     char *rc;
  20.  
  21.     if ((fp = fopen(cpConfigfile, "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 ((nTok = tokenize(&cppTok, lb->lb_cpLnCur, lb->lb_wLnCur, "     ", 2)) == 2) {
  40.             if (strcmpi(cpField, cppTok[0]) == 0) {
  41.                 strcpy(cpDestbuf, cppTok[1]);
  42.                 cu(cpDestbuf);
  43.             }
  44.         }
  45.     } while (lbseek(lb, 1, LBSEEK_CUR));
  46.  
  47.     cu(FALSE);
  48.  
  49.     cus:
  50.     if (lb)
  51.         lbfree(lb);
  52.     if (buf)
  53.         free(buf);
  54.     if (fp)
  55.         fclose(fp);
  56.     return rc;
  57. }
  58.  
  59.