1 | diff --git a/chicken.h b/chicken.h |
---|
2 | index 73de3b5..bbeab72 100644 |
---|
3 | --- a/chicken.h |
---|
4 | +++ b/chicken.h |
---|
5 | @@ -1109,8 +1109,15 @@ extern double trunc(double); |
---|
6 | C_unfix(end1) - C_unfix(start1) ), C_SCHEME_UNDEFINED) |
---|
7 | #define C_words(n) C_fix(C_bytestowords(C_unfix(n))) |
---|
8 | #define C_bytes(n) C_fix(C_wordstobytes(C_unfix(n))) |
---|
9 | + |
---|
10 | +#if defined(__linux__) || defined(C_XXXBSD) |
---|
11 | +#define C_random_fixnum(n) C_fix(random() % C_unfix(n)) |
---|
12 | +#define C_randomize(n) (srandom(C_unfix(n)), C_SCHEME_UNDEFINED) |
---|
13 | +#else |
---|
14 | #define C_random_fixnum(n) C_fix((int)(((double)rand())/(RAND_MAX + 1.0) * C_unfix(n))) |
---|
15 | #define C_randomize(n) (srand(C_unfix(n)), C_SCHEME_UNDEFINED) |
---|
16 | +#endif |
---|
17 | + |
---|
18 | #define C_block_size(x) C_fix(C_header_size(x)) |
---|
19 | #define C_pointer_address(x) ((C_byte *)C_block_item((x), 0)) |
---|
20 | #define C_block_address(ptr, n, x) C_a_unsigned_int_to_num(ptr, n, x) |
---|