Fixed up config parsing
This commit is contained in:
parent
e00b1bde67
commit
684a5adf95
18
src/config.c
18
src/config.c
@ -18,24 +18,18 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
void config_put(struct map* map, char* line) {
|
void config_put(struct map* map, char* line) {
|
||||||
line = strdup(line);
|
|
||||||
char* hash = strchr(line, '#');
|
|
||||||
if(hash != NULL) {
|
|
||||||
if(hash == line || *(hash - 1) != '\\') {
|
|
||||||
*hash = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t line_size = strlen(line);
|
size_t line_size = strlen(line);
|
||||||
char* new_line = calloc(1, line_size + 1);
|
char* new_line = calloc(1, line_size + 1);
|
||||||
size_t new_line_count = 0;
|
size_t new_line_count = 0;
|
||||||
for(size_t count = 0; count < line_size; ++count) {
|
for(size_t count = 0; count < line_size; ++count) {
|
||||||
if(line[count] == '\\' && line[count + 1] != '\\') {
|
if(line[count] == '\\') {
|
||||||
continue;
|
new_line[new_line_count++] = line[++count];
|
||||||
}
|
} else if(line[count] == '#') {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
new_line[new_line_count++] = line[count];
|
new_line[new_line_count++] = line[count];
|
||||||
}
|
}
|
||||||
free(line);
|
}
|
||||||
line = new_line;
|
line = new_line;
|
||||||
char* equals = strchr(line, '=');
|
char* equals = strchr(line, '=');
|
||||||
if(equals == NULL) {
|
if(equals == NULL) {
|
||||||
|
Loading…
Reference in New Issue
Block a user