Пример #1
0
/* 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);
}
Пример #2
0
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;
}
Пример #3
0
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;
}