| | |
| | | #include <string.h> |
| | | #include "option_list.h" |
| | | |
| | | typedef struct{ |
| | | char *key; |
| | | char *val; |
| | | int used; |
| | | } kvp; |
| | | int read_option(char *s, list *options) |
| | | { |
| | | size_t i; |
| | | size_t len = strlen(s); |
| | | char *val = 0; |
| | | for(i = 0; i < len; ++i){ |
| | | if(s[i] == '='){ |
| | | s[i] = '\0'; |
| | | val = s+i+1; |
| | | break; |
| | | } |
| | | } |
| | | if(i == len-1) return 0; |
| | | char *key = s; |
| | | option_insert(options, key, val); |
| | | return 1; |
| | | } |
| | | |
| | | void option_insert(list *l, char *key, char *val) |
| | | { |
| | |
| | | { |
| | | char *v = option_find(l, key); |
| | | if(v) return v; |
| | | fprintf(stderr, "%s: Using default '%s'\n", key, def); |
| | | if(def) fprintf(stderr, "%s: Using default '%s'\n", key, def); |
| | | return def; |
| | | } |
| | | |
| | |
| | | return def; |
| | | } |
| | | |
| | | int option_find_int_quiet(list *l, char *key, int def) |
| | | { |
| | | char *v = option_find(l, key); |
| | | if(v) return atoi(v); |
| | | return def; |
| | | } |
| | | |
| | | float option_find_float_quiet(list *l, char *key, float def) |
| | | { |
| | | char *v = option_find(l, key); |
| | | if(v) return atof(v); |
| | | return def; |
| | | } |
| | | |
| | | float option_find_float(list *l, char *key, float def) |
| | | { |
| | | char *v = option_find(l, key); |