2018 revision to classic DataBus AVC code.

Dependencies:   LSM303DLM Servo SerialGraphicLCD L3G4200D IncrementalEncoder SimpleShell

Committer:
shimniok
Date:
Tue Dec 04 07:01:06 2018 +0000
Revision:
6:83a6666a62d7
Parent:
5:eff573d4ede7
Child:
7:1f2661b840ed
stubbed out attach/assign and struct array for storing key/value pairs & format.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shimniok 4:de7feb458652 1 #include "Config.h"
shimniok 5:eff573d4ede7 2 #include <ctype.h>
shimniok 5:eff573d4ede7 3
shimniok 5:eff573d4ede7 4
shimniok 5:eff573d4ede7 5 char *trim(char *s)
shimniok 5:eff573d4ede7 6 {
shimniok 5:eff573d4ede7 7 char *t = s;
shimniok 5:eff573d4ede7 8
shimniok 5:eff573d4ede7 9 // rtrim
shimniok 5:eff573d4ede7 10 t = s + strlen(s) - 1;
shimniok 5:eff573d4ede7 11 while (isspace(*t))
shimniok 5:eff573d4ede7 12 *t = '\0';
shimniok 5:eff573d4ede7 13
shimniok 5:eff573d4ede7 14 // ltrim
shimniok 5:eff573d4ede7 15 while (*s && isspace(*s))
shimniok 5:eff573d4ede7 16 s++;
shimniok 5:eff573d4ede7 17
shimniok 5:eff573d4ede7 18 return s;
shimniok 5:eff573d4ede7 19 }
shimniok 4:de7feb458652 20
shimniok 4:de7feb458652 21
shimniok 4:de7feb458652 22 int Config::load(char *filename)
shimniok 4:de7feb458652 23 {
shimniok 4:de7feb458652 24 char buf[MAXBUF];
shimniok 4:de7feb458652 25 char *key;
shimniok 4:de7feb458652 26 char *value;
shimniok 4:de7feb458652 27 int status=0;
shimniok 4:de7feb458652 28 FILE *fp;
shimniok 4:de7feb458652 29
shimniok 4:de7feb458652 30 fp = fopen(filename, "r");
shimniok 4:de7feb458652 31 if (fp == NULL) {
shimniok 4:de7feb458652 32 status = -1;
shimniok 4:de7feb458652 33 } else {
shimniok 4:de7feb458652 34 while (!feof(fp)) {
shimniok 4:de7feb458652 35 fgets(buf, MAXBUF-1, fp);
shimniok 5:eff573d4ede7 36
shimniok 5:eff573d4ede7 37 char *t = buf;
shimniok 5:eff573d4ede7 38 char *s = buf;
shimniok 5:eff573d4ede7 39 // trim spaces and terminate at #
shimniok 5:eff573d4ede7 40 while (*t) {
shimniok 5:eff573d4ede7 41 if (isspace(*buf)) {
shimniok 5:eff573d4ede7 42 s = t;
shimniok 5:eff573d4ede7 43 } else if (*t == '#') {
shimniok 5:eff573d4ede7 44 *t = '\0';
shimniok 4:de7feb458652 45 }
shimniok 5:eff573d4ede7 46 t++;
shimniok 5:eff573d4ede7 47 }
shimniok 5:eff573d4ede7 48
shimniok 5:eff573d4ede7 49 key = strtok(s, ":#");
shimniok 5:eff573d4ede7 50 value = strtok(NULL, ":#");
shimniok 5:eff573d4ede7 51 if (key && value && *key && *value) {
shimniok 5:eff573d4ede7 52 key = trim(key);
shimniok 5:eff573d4ede7 53 value = trim(value);
shimniok 5:eff573d4ede7 54 printf("<%s>=<%s>\n", key, value);
shimniok 5:eff573d4ede7 55 // look for key
shimniok 5:eff573d4ede7 56 // parse value
shimniok 5:eff573d4ede7 57 // set options
shimniok 4:de7feb458652 58 }
shimniok 4:de7feb458652 59 }
shimniok 4:de7feb458652 60 fclose(fp);
shimniok 4:de7feb458652 61 };
shimniok 4:de7feb458652 62
shimniok 4:de7feb458652 63 return status;
shimniok 4:de7feb458652 64 }