예제 #1
0
파일: app_pd.c 프로젝트: ArkShen/xcb
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);
		}
	}
}
예제 #2
0
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);
		}
	}
}
예제 #3
0
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);
		}
	}
}
예제 #4
0
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);
		}
	}
}
예제 #5
0
파일: md_xspeed.c 프로젝트: ifzz/xcb
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);
		}
	}
}
예제 #6
0
파일: app_ema.c 프로젝트: ArkShen/xcb
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);
		}
	}
}
예제 #7
0
파일: xcb-dp2.c 프로젝트: lbustc/xcube
/* 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);
	}
}
예제 #8
0
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);
		}
	}
}