static inline void load_config(void) { /* FIXME */ if ((cfg = config_load("/etc/xcb/pd.conf"))) { char *cat = category_browse(cfg, NULL); while (cat) { if (!strcasecmp(cat, "pair")) { struct variable *var = variable_browse(cfg, cat); struct cpl *cpl = NULL; while (var) { if (!strcasecmp(var->name, "contract1")) { if (!strcasecmp(var->value, "")) break; if (cpl == NULL) { if (NEW(cpl) == NULL) break; cpl->contract2 = NULL; cpl->price1 = cpl->price2 = cpl->prevpd = -1.0; pthread_spin_init(&cpl->lock, 0); } cpl->contract1 = var->value; } else if (!strcasecmp(var->name, "contract2")) { if (!strcasecmp(var->value, "")) break; if (cpl == NULL) { if (NEW(cpl) == NULL) break; cpl->contract1 = NULL; cpl->price1 = cpl->price2 = cpl->prevpd = -1.0; pthread_spin_init(&cpl->lock, 0); } cpl->contract2 = var->value; } else xcb_log(XCB_LOG_WARNING, "Unknown variable '%s' in " "category '%s' of pd.conf", var->name, cat); var = var->next; } if (cpl && cpl->contract1 && cpl->contract2) { dlist_t dlist; if ((dlist = table_get_value(contracts, cpl->contract1)) == NULL) { dlist = dlist_new(NULL, NULL); table_insert(contracts, cpl->contract1, dlist); } dlist_insert_tail(dlist, cpl); if ((dlist = table_get_value(contracts, cpl->contract2)) == NULL) { dlist = dlist_new(NULL, NULL); table_insert(contracts, cpl->contract2, dlist); } dlist_insert_tail(dlist, cpl); dlist_insert_tail(pairs, cpl); } else if (cpl) FREE(cpl); } cat = category_browse(cfg, cat); } } }
static inline void load_config(void) { /* FIXME */ if ((cfg = config_load("/etc/xcb/csi300.conf"))) { char *cat = category_browse(cfg, NULL); struct variable *var; while (cat) { if (!strcasecmp(cat, "weights")) { var = variable_browse(cfg, cat); while (var) { struct wp *wp; if (NEW(wp)) { wp->weight = atof(var->value); wp->price = NAN; table_insert(contracts, var->name, wp); } var = var->next; } } else if (!strcasecmp(cat, "divisor")) if ((var = variable_browse(cfg, cat)) && strcmp(var->value, "")) divisor = atof(var->value); cat = category_browse(cfg, cat); } } }
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); } } }
static inline void load_config(void) { /* FIXME */ if ((cfg = config_load("/etc/xcb/sse50etf.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, "CRU")) { if (strcmp(var->value, "")) cru = atoi(var->value); } else if (!strcasecmp(var->name, "ECC")) { if (strcmp(var->value, "")) ecc = atof(var->value); } else xcb_log(XCB_LOG_WARNING, "Unknown variable '%s' in " "category '%s' of sse50etf.conf", var->name, cat); var = var->next; } } else if (!strcasecmp(cat, "weights")) { var = variable_browse(cfg, cat); while (var) { struct wp *wp; if (NEW(wp)) { wp->weight = atof(var->value); wp->price = NAN; wp->type = 1; table_insert(contracts, var->name, wp); } var = var->next; } } else if (!strcasecmp(cat, "prices")) { var = variable_browse(cfg, cat); while (var) { struct wp *wp; if (NEW(wp)) { wp->weight = 1.0; wp->price = atof(var->value); wp->type = 2; table_insert(contracts, var->name, wp); } var = var->next; } } cat = category_browse(cfg, cat); } } }
static inline void load_config(void) { /* FIXME */ if ((cfg = config_load("/etc/xcb/xspeed.conf"))) { char *cat = category_browse(cfg, NULL); while (cat) { if (!strcasecmp(cat, "general")) { struct variable *var = variable_browse(cfg, cat); while (var) { if (!strcasecmp(var->name, "front_ip")) { if (strcasecmp(var->value, "")) front_ip = var->value; } else if (!strcasecmp(var->name, "front_port")) { if (strcasecmp(var->value, "")) front_port = var->value; } else if (!strcasecmp(var->name, "userid")) { if (strcasecmp(var->value, "")) userid = var->value; } else if (!strcasecmp(var->name, "passwd")) { if (strcasecmp(var->value, "")) passwd = var->value; } else if (!strcasecmp(var->name, "reqid")) { if (strcasecmp(var->value, "")) reqid = atoi(var->value); } else if (!strcasecmp(var->name, "contracts")) { if (strcasecmp(var->value, "")) contracts= var->value; } else xcb_log(XCB_LOG_WARNING, "Unknown variable '%s' in " "category '%s' of xspeed.conf", var->name, cat); var = var->next; } } cat = category_browse(cfg, cat); } } }
static void load_config(void) { /* FIXME */ if ((cfg = config_load("/etc/xcb/ema.conf"))) { char *cat = category_browse(cfg, NULL); while (cat ) { if (!strcasecmp(cat, "general")) { struct variable *var = variable_browse(cfg, cat); while (var) { if (!strcasecmp(var->name, "number")) { if (strcasecmp(var->value, "")) n = atoi(var->value); } else xcb_log(XCB_LOG_WARNING, "Unknown variable '%s' in " "category '%s' of ema.conf", var->name, cat); var = var->next; } } cat = category_browse(cfg, cat); } } }
/* FIXME */ static void init_pgm_send_cfg(struct pgm_cfg *pgm_send_cfg) { char *cat = category_browse(cfg, NULL); while (cat) { if (!strcasecmp(cat, "pgm_sender")) { struct variable *var = variable_browse(cfg, cat); while (var) { if (!strcasecmp(var->name, "network")) { if (strcmp(var->value, "")) pgm_send_cfg->network = var->value; } else if (!strcasecmp(var->name, "port")) { if (strcmp(var->value, "")) pgm_send_cfg->port = atoi(var->value); } else xcb_log(XCB_LOG_WARNING, "Unknown variable '%s' in category '%s'" " of xcb-dp2.conf", var->name, cat); var = var->next; } } cat = category_browse(cfg, cat); } }
static inline void load_config(void) { /* FIXME */ if ((cfg = config_load("/etc/xcb/vxo.conf"))) { char *cat = category_browse(cfg, NULL); struct variable *var; while (cat) { if (!strcasecmp(cat, "general")) { struct variable *var = variable_browse(cfg, cat); while (var) { if (!strcasecmp(var->name, "inmsg")) { if (strcmp(var->value, "")) inmsg = var->value; } else xcb_log(XCB_LOG_WARNING, "Unknown variable '%s' in " "category '%s' of vxo.conf", var->name, cat); var = var->next; } } else if (!strcasecmp(cat, "expiries")) { var = variable_browse(cfg, cat); while (var) { char *p; if ((p = strrchr(var->name, 'C')) == NULL) p = strrchr(var->name, 'P'); if (p && p != var->name && p != var->name + strlen(var->name) - 1 && ((*(p - 1) == '-' && *(p + 1) == '-') || (isdigit(*(p - 1)) && isdigit(*(p + 1))))) { dstr spotname, strike; struct pd *pd; struct scp *scp; spotname = *(p - 1) == '-' ? dstr_new_len(var->name, p - var->name - 1) : dstr_new_len(var->name, p - var->name); strike = *(p + 1) == '-' ? dstr_new_len(p + 2, var->name + strlen(var->name) - p - 2) : dstr_new_len(p + 1, var->name + strlen(var->name) - p - 1); if ((pd = table_get_value(spots, spotname)) == NULL) { if (NEW(scp)) { scp->strike = atof(strike); scp->cvol = scp->pvol = NAN; scp->cvol2 = scp->pvol2 = NAN; scp->cvol3 = scp->pvol3 = NAN; if (NEW(pd)) { pd->prevxo = pd->prevxo2 = pd->prevxo3 = NAN; pd->sep = *(p - 1) == '-' ? "-" : ""; pd->dlist = dlist_new(NULL, scpfree); dlist_insert_tail(pd->dlist, scp); table_insert(spots, spotname, pd); } else FREE(scp); } else dstr_free(spotname); } else { dlist_iter_t iter = dlist_iter_new(pd->dlist, DLIST_START_HEAD); dlist_node_t node; while ((node = dlist_next(iter))) { scp = (struct scp *)dlist_node_value(node); if (scp->strike > atof(strike) || fabs(scp->strike - atof(strike)) <= 0.000001) break; } dlist_iter_free(&iter); if (node == NULL || scp->strike > atof(strike)) { if (NEW(scp)) { scp->strike = atof(strike); scp->cvol = scp->pvol = NAN; scp->cvol2 = scp->pvol2 = NAN; scp->cvol3 = scp->pvol3 = NAN; } if (node == NULL) dlist_insert_tail(pd->dlist, scp); else dlist_insert(pd->dlist, node, scp, 0); } dstr_free(spotname); } dstr_free(strike); } var = var->next; } } cat = category_browse(cfg, cat); } } }