comparison config.c @ 1783:eda8df5bc74c

Minor cleanup
author Michael Pavone <pavone@retrodev.com>
date Mon, 11 Mar 2019 00:04:48 -0700
parents ba3fb7a3be6b
children a4cae960fd08
comparison
equal deleted inserted replaced
1782:b2bffd98063d 1783:eda8df5bc74c
47 47
48 config_data = NULL; 48 config_data = NULL;
49 curline = strip_ws(curline); 49 curline = strip_ws(curline);
50 int len = strlen(curline); 50 int len = strlen(curline);
51 if (!len) { 51 if (!len) {
52 *line = *line + 1; 52 (*line)++;
53 continue; 53 continue;
54 } 54 }
55 if (curline[0] == '#') { 55 if (curline[0] == '#') {
56 *line = *line + 1; 56 (*line)++;
57 continue; 57 continue;
58 } 58 }
59 if (curline[0] == '}') { 59 if (curline[0] == '}') {
60 if (started) { 60 if (started) {
61 return head; 61 return head;
65 65
66 char * end = curline + len - 1; 66 char * end = curline + len - 1;
67 if (*end == '{') { 67 if (*end == '{') {
68 *end = 0; 68 *end = 0;
69 curline = strip_ws(curline); 69 curline = strip_ws(curline);
70 *line = *line + 1; 70 (*line)++;
71 head = tern_insert_node(head, curline, parse_config_int(state, 1, line)); 71 head = tern_insert_node(head, curline, parse_config_int(state, 1, line));
72 } else { 72 } else {
73 char * val = strip_ws(split_keyval(curline)); 73 char * val = strip_ws(split_keyval(curline));
74 char * key = curline; 74 char * key = curline;
75 if (*val) { 75 if (*val) {
76 head = tern_insert_ptr(head, key, strdup(val)); 76 head = tern_insert_ptr(head, key, strdup(val));
77 } else { 77 } else {
78 fprintf(stderr, "Key %s is missing a value on line %d\n", key, *line); 78 fprintf(stderr, "Key %s is missing a value on line %d\n", key, *line);
79 } 79 }
80 *line = *line + 1; 80 (*line)++;
81 } 81 }
82 } 82 }
83 return head; 83 return head;
84 } 84 }
85 85
172 } 172 }
173 long config_size = file_size(config_file); 173 long config_size = file_size(config_file);
174 if (!config_size) { 174 if (!config_size) {
175 goto config_empty; 175 goto config_empty;
176 } 176 }
177 char * config_data = malloc(config_size+1); 177 char *config_data = calloc(config_size + 1, 1);
178 if (fread(config_data, 1, config_size, config_file) != config_size) { 178 if (fread(config_data, 1, config_size, config_file) != config_size) {
179 goto config_read_fail; 179 goto config_read_fail;
180 } 180 }
181 config_data[config_size] = '\0';
182 181
183 ret = parse_config(config_data); 182 ret = parse_config(config_data);
184 config_read_fail: 183 config_read_fail:
185 free(config_data); 184 free(config_data);
186 config_empty: 185 config_empty: