| 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) |
|---|