summaryrefslogtreecommitdiff
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
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
-rw-r--r--ChangeLog5
-rw-r--r--random.c10
2 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 49492dcef2..7fc333c02e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,7 @@
-Fri Jul 17 13:55:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 17 13:58:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (fill_random_seed): /dev/urandom is not available on
+ DOSISH systems.
* random.c (random_equal): new method Random#==.
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