Пример #1
0
static critbit_tree * special_resources(void)
{
    static critbit_tree cb = CRITBIT_TREE();
    if (!cb.root) {
        const char * special[] = { "seed", "sapling", "tree", "grave", "chaos", 0 };
        char buffer[32];
        int i;
        for (i = 0; special[i]; ++i) {
            size_t len = strlen(special[i]);
            len = cb_new_kv(special[i], len, &i, sizeof(int), buffer);
            cb_insert(&cb, buffer, len);
        }
    }
    return &cb;
}
Пример #2
0
        time_t ltime;
        time(&ltime);
        fprintf(logfile, "===\n=== Logfile started at %s===\n", ctime(&ltime));
        return log_create(log_flags, logfile, log_stdio);
    }
    return NULL;
}

int log_level(log_t * log, int flags)
{
    int old = log->flags;
    log->flags = flags;
    return old;
}

static critbit_tree stats = CRITBIT_TREE();

int stats_count(const char *stat, int delta) {
    void * match;
    if (cb_find_prefix_str(&stats, stat, &match, 1, 0) == 0) {
        size_t len;
        char data[128];
        len = cb_new_kv(stat, strlen(stat), &delta, sizeof(delta), data);
        cb_insert(&stats, data, len);
        return delta;
    }
    else {
        int *num;
        cb_get_kv_ex(match, (void **)&num);
        return *num += delta;
    }