/* FIXME */ static void config_command(client c) { if (!strcasecmp(c->argv[1], "get")) { pthread_mutex_lock(&cfg_lock); if (!strcasecmp(c->argv[2], "log_level")) add_reply_string_format(c, "log_level:%s\r\n", variable_retrieve(cfg, "general", "log_level")); else if (!strcasecmp(c->argv[2], "udp_port")) add_reply_string_format(c, "udp_port:%s\r\n", variable_retrieve(cfg, "general", "udp_port")); else if (!strcasecmp(c->argv[2], "sender") && !strcasecmp(c->argv[3], "network")) add_reply_string_format(c, "sender network:%s\r\n", variable_retrieve(cfg, "pgm_sender", "network")); else if (!strcasecmp(c->argv[2], "sender") && !strcasecmp(c->argv[3], "port")) add_reply_string_format(c, "sender port:%s\r\n", variable_retrieve(cfg, "pgm_sender", "port")); else add_reply_string(c, "-1\r\n", 4); pthread_mutex_unlock(&cfg_lock); } else if (!strcasecmp(c->argv[1], "set")) { struct category *category; pthread_mutex_lock(&cfg_lock); if (!strcasecmp(c->argv[2], "log_level") && c->argc >= 4) { category = category_get(cfg, "general"); if (variable_update(category, "log_level", c->argv[3]) == 0) add_reply_string(c, "OK\r\n", 4); else add_reply_string(c, "-1\r\n", 4); } else if (!strcasecmp(c->argv[2], "udp_port") && c->argc >= 4) { category = category_get(cfg, "general"); if (variable_update(category, "udp_port", c->argv[3]) == 0) add_reply_string(c, "OK\r\n", 4); else add_reply_string(c, "-1\r\n", 4); } else if (!strcasecmp(c->argv[2], "sender") && !strcasecmp(c->argv[3], "network") && c->argc >= 5) { category = category_get(cfg, "pgm_sender"); if (variable_update(category, "network", c->argv[4]) == 0) add_reply_string(c, "OK\r\n", 4); else add_reply_string(c, "-1\r\n", 4); } else if (!strcasecmp(c->argv[2], "sender") && !strcasecmp(c->argv[3], "port") && c->argc >= 5) { category = category_get(cfg, "pgm_sender"); if (variable_update(category, "port", c->argv[4]) == 0) add_reply_string(c, "OK\r\n", 4); else add_reply_string(c, "-1\r\n", 4); } else add_reply_string(c, "-1\r\n", 4); pthread_mutex_unlock(&cfg_lock); } else add_reply_error_format(c, "unknown action '%s'", c->argv[1]); add_reply_string(c, "\r\n", 2); }
struct variable *variable_browse(struct config *cfg, const char *category) { struct category *cat; if (cfg == NULL || category == NULL) return NULL; if (cfg->last_browse && cfg->last_browse->name == category) cat = cfg->last_browse; else cat = category_get(cfg, category); return cat ? cat->first : NULL; }
int qif_output(tran* first, FILE* file) { if (!first) return -1; fprintf(file, "!Type:Bank\n"); tran* tr = first; while(tr) { const char* cat; if (tr->type == TR_CLOSING_BALANCE) { tr = tr->next; continue; } fprintf(file, "D%d/%d/%d\n", tr->month, tr->day, tr->year); if (tr == first) { fprintf(file, "T%d.%02d\n", tr->bal / 100, (tr->bal % 100) * (tr->bal > 0 ? 1 : -1)); fprintf(file, "POpening Balance\n"); } else { fprintf(file, "T%d.%02d\n", tr->amt / 100, (tr->amt % 100) * (tr->amt > 0 ? 1 : -1)); fprintf(file, "P%s\n", tr->descr); } fprintf(file, "N%s\n", get_transaction_str(tr->type)); if ((cat = category_get(tr->descr))) fprintf(file, "L%s\n", cat); fprintf(file, "^\n"); tr = tr->next; } return 0; }