projects
/
libgliar
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added support for numerical values in option struct
[libgliar]
/
src
/
cfg.c
diff --git
a/src/cfg.c
b/src/cfg.c
index
8902d9c
..
124449e
100644
(file)
--- a/
src/cfg.c
+++ b/
src/cfg.c
@@
-64,7
+64,9
@@
struct cfgopt *gliar_load_cfg(const char *fname)
if((opt = malloc(sizeof *opt))) {
if((opt->key = malloc(strlen(line) + 1))) {
strcpy(opt->key, line);
if((opt = malloc(sizeof *opt))) {
if((opt->key = malloc(strlen(line) + 1))) {
strcpy(opt->key, line);
- opt->val = 0;
+ opt->str_val = 0;
+ opt->num_val = 0;
+ opt->type = unknown;
} else {
free(opt);
opt = 0;
} else {
free(opt);
opt = 0;
@@
-72,15
+74,16
@@
struct cfgopt *gliar_load_cfg(const char *fname)
}
} else {
char *tmp;
}
} else {
char *tmp;
- int prev_len = opt->val ? strlen(opt->val) : 0;
+ int prev_len = opt->str_val ? strlen(opt->str_val) : 0;
- if(opt && (tmp = realloc(opt->val, prev_len + strlen(line) + 2))) {
- opt->val = tmp;
+ if(opt && (tmp = realloc(opt->str_val, prev_len + strlen(line) + 2))) {
+ opt->type = str;
+ opt->str_val = tmp;
if(prev_len) {
if(prev_len) {
- strcat(opt->val, " ");
- strcat(opt->val, line);
+ strcat(opt->str_val, " ");
+ strcat(opt->str_val, line);
} else {
} else {
- strcpy(opt->val, line);
+ strcpy(opt->str_val, line);
}
}
}
}
}
}
@@
-103,7
+106,7
@@
const char *gliar_find_opt(struct cfgopt *list, const char *name)
while(list) {
if(strcmp(list->key, name) == 0) {
while(list) {
if(strcmp(list->key, name) == 0) {
- return list->val;
+ return list->str_val;
}
list = list->next;
}
}
list = list->next;
}
@@
-114,7
+117,7
@@
void gliar_print_opt(struct cfgopt *list)
{
printf("OPTIONS\n");
while(list) {
{
printf("OPTIONS\n");
while(list) {
- printf("\"%s\" -> \"%s\"\n", list->key, list->val);
+ printf("\"%s\" -> \"%s\"\n", list->key, list->str_val);
list = list->next;
}
}
list = list->next;
}
}