While checking if there was still a score file on trek(6) I found that it was
still using random(), and  inspired by the code on NetBSD and OpenBSD relevant
manpages I came up with this diff. Let's bring trek(6) to the 21st century, at
least here :) Does it look good?

Index: trek.h
===================================================================
RCS file: /cvs/src/games/trek/trek.h,v
retrieving revision 1.13
diff -u -p -u -r1.13 trek.h
--- trek.h      2 Jun 2013 04:28:39 -0000       1.13
+++ trek.h      25 Nov 2015 20:19:14 -0000
@@ -50,6 +50,8 @@
 **     actually allocate stuff in "externs.c"
 */
 
+#include <sys/types.h>
+
 /*********************  GALAXY  **************************/
 
 /* galactic parameters */
@@ -473,7 +475,7 @@ void play(void);
 void ram(int, int );
 
 /* ranf.c */
-int ranf(int);
+uint32_t ranf(uint32_t);
 double franf(void);
 
 /* rest.c */
Index: ranf.c
===================================================================
RCS file: /cvs/src/games/trek/ranf.c,v
retrieving revision 1.5
diff -u -p -u -r1.5 ranf.c
--- ranf.c      27 Oct 2009 23:59:27 -0000      1.5
+++ ranf.c      25 Nov 2015 20:19:47 -0000
@@ -33,23 +33,17 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-int
-ranf(max)
-       int     max;
+uint32_t
+ranf(uint32_t max)
 {
-       int     t;
-
        if (max <= 0)
                return (0);
-       t = random() >> 5;
-       return (t % max);
+       return (arc4random_uniform(max));
 }
 
 
 double
 franf()
 {
-       double          t;
-       t = random() & 077777;
-       return (t / 32767.0);
+       return ((double)(arc4random() / RAND_MAX));
 }

Reply via email to