summaryrefslogtreecommitdiff
path: root/random.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-17 04:58:38 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-17 04:58:38 +0000
commited52949e7960693eb2498d20b8e4d4cc06c3a801 (patch)
tree89e0cce17d3fb50a2459da887c2ee5cfd2bb68ec /random.c
parent115c220b4d7593bccff0ad3feb66bcdbc4bb008a (diff)
* random.c (fill_random_seed): /dev/urandom is not available on
DOSISH systems. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24163 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'random.c')
-rw-r--r--random.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/random.c b/random.c
index caa33babbd..c504ca22c1 100644
--- a/random.c
+++ b/random.c
@@ -375,19 +375,25 @@ random_init(int argc, VALUE *argv, VALUE obj)
#define DEFAULT_SEED_LEN (DEFAULT_SEED_CNT * sizeof(int))
+#if defined(S_ISCHR) && !defined(DOSISH)
+# define USE_DEV_URANDOM 1
+#else
+# define USE_DEV_URANDOM 0
+#endif
+
static void
fill_random_seed(unsigned int seed[DEFAULT_SEED_CNT])
{
static int n = 0;
struct timeval tv;
-#ifdef S_ISCHR
+#if USE_DEV_URANDOM
int fd;
struct stat statbuf;
#endif
memset(seed, 0, DEFAULT_SEED_LEN);
-#ifdef S_ISCHR
+#if USE_DEV_URANDOM
if ((fd = open("/dev/urandom", O_RDONLY
#ifdef O_NONBLOCK
|O_NONBLOCK