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; }
time_t ltime; time(<ime); fprintf(logfile, "===\n=== Logfile started at %s===\n", ctime(<ime)); 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; }