11 #define RAND_BUF_SIZE 1024
12 #define RND_DEV "/dev/urandom"
14 unsigned int get_random(void)
16 static int rndbuf[RAND_BUF_SIZE];
17 static int index = RAND_BUF_SIZE;
18 int fd, error, i = 0, ret;
20 if (index < RAND_BUF_SIZE)
21 return rndbuf[index++];
23 fd = open(RND_DEV, O_RDONLY);
26 fprintf(stderr, "Error opening file %s: %s\n",
27 RND_DEV, strerror(error));
32 ret = read(fd, rndbuf + i,
33 RAND_BUF_SIZE * (sizeof(rndbuf[0]) - i));
37 fprintf(stderr, "Error reading file %s: %s\n",
38 RND_DEV, strerror(error));
43 } while (i < RAND_BUF_SIZE * sizeof(rndbuf[0]));