static inline void load_config(void) { /* FIXME */ if ((cfg = config_load("/etc/xcb/impvbaw.conf"))) { char *cat = category_browse(cfg, NULL); struct variable *var; while (cat) { if (!strcasecmp(cat, "general")) { var = variable_browse(cfg, cat); while (var) { if (!strcasecmp(var->name, "rate")) { if (strcmp(var->value, "")) r = atof(var->value); } else xcb_log(XCB_LOG_WARNING, "Unknown variable '%s' in " "category '%s' of impvbaw.conf", var->name, cat); var = var->next; } } else if (!strcasecmp(cat, "expiries")) { table_node_t node; var = variable_browse(cfg, cat); while (var) { /* FIXME */ if ((node = table_insert_raw(expiries, var->name))) table_set_double(node, diffnow(atoi(var->value)) / 252.0); var = var->next; } } cat = category_browse(cfg, cat); } } }
int table_append_double(HTable table, double val) { int idx; char b[100]; if ((! table) || (! val)) return -1; idx = get_next_index(table); sprintf(b, "%i", idx); table_set_double(table, b, val); return 0; }
static int add_field(HTable table, char *name, char *value, char *buf, long int *pos) { int value_type; char *s; HTable tbl; value_type = get_value_type(value); switch (value_type) { case TYPE_INT: table_set_int(table, name, atoi(value)); break; case TYPE_STRING: s = unescape_string(value); if (! s) return -1; table_set_str(table, name, s); free(s); break; case TYPE_FLOAT: table_set_double(table, name, atof(value)); break; case TYPE_TABLE: tbl = table_create(); if (table_set_table(table, name, tbl)) { table_free(tbl); return -1; } if (parse_table(tbl, buf, pos, 0)) return -1; break; default: return -1; } return 0; }