ref: eb88ee0973c9a19b14e2e0e1579ee17625d73e05
dir: /misc.c/
/* * misc.c: Miscellaneous helpful functions. */ #include <assert.h> #include <stdlib.h> #include "puzzles.h" int rand_upto(int limit) { unsigned long divisor = RAND_MAX / (unsigned)limit; unsigned long max = divisor * (unsigned)limit; unsigned long n; assert(limit > 0); do { n = rand(); } while (n >= max); n /= divisor; return (int)n; } void free_cfg(config_item *cfg) { config_item *i; for (i = cfg; i->type != C_END; i++) if (i->type == C_STRING) sfree(i->sval); sfree(cfg); }