home *** CD-ROM | disk | FTP | other *** search
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #include "defines.h"
- #include "cus.h"
- #include "proto.h"
- #include "lbio.h"
-
- char *getfield(char *cpConfigfile, char *cpField, char *cpDestbuf)
- {
- FILE *fp = NULL;
- char *buf = NULL;
- LB *lb = NULL;
- long len;
- int nTok;
- char **cppTok;
- char *rc;
-
- if ((fp = fopen(cpConfigfile, "r")) == NULL)
- cu(ERR);
- if (fseek(fp, 0L, SEEK_END) == -1L)
- cu(ERR);
- if ((len = ftell(fp)) == -1L)
- cu(ERR);
- if (fseek(fp, 0L, SEEK_SET) == -1L)
- cu(ERR);
- if ((buf = (char *)malloc(len)) == NULL)
- cu(ERR);
- if ((fread(buf, len, 1, fp) != 1) && ferror(fp))
- cu(ERR);
- if ((lb = lbopen(buf, buf+len-1)) == NULL)
- cu(ERR);
- if (lbseek(lb, 0, LBSEEK_SET) == NULL)
- cu(ERR);
-
- do {
- if ((nTok = tokenize(&cppTok, lb->lb_cpLnCur, lb->lb_wLnCur, " ", 2)) == 2) {
- if (strcmpi(cpField, cppTok[0]) == 0) {
- strcpy(cpDestbuf, cppTok[1]);
- cu(cpDestbuf);
- }
- }
- } while (lbseek(lb, 1, LBSEEK_CUR));
-
- cu(FALSE);
-
- cus:
- if (lb)
- lbfree(lb);
- if (buf)
- free(buf);
- if (fp)
- fclose(fp);
- return rc;
- }
-
-