18 return (res.
code == ARFILL_OK) ? 0 : -1;
27 if((ub < 0) == (lb < 0)) {
30 return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1));
32 assert(!
"Unreachable");
42 const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1);
45 uintmax_t got_entropy = 0;
53 assert(RAND_MAX > max);
54 assert(range < intmax_max);
56 for(; got_entropy < range;) {
57 got_entropy = (got_entropy << 24) | max;
59 value = (value << 24) | (random() % max);
61 value = (value << 24) | (rand() % max);
65 return lb + (intmax_t)(value % (range + 1));