From: mmj Date: Thu, 3 Jun 2004 16:57:14 +0000 (+1000) Subject: Bye bye FILE* X-Git-Tag: RELEASE_1_0_0~160 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ebb1c5d0288fec84417097ebdabfbe6b01a0a7cb;p=thirdparty%2Fmlmmj.git Bye bye FILE* --- diff --git a/src/random-int.c b/src/random-int.c index 1fe6873f..b5405d88 100644 --- a/src/random-int.c +++ b/src/random-int.c @@ -6,30 +6,47 @@ * Public License as described at http://www.gnu.org/licenses/gpl.txt */ -#include +#include #include +#include #include int random_int() { unsigned int seed; - FILE *devrandom; + int devrandom; + unsigned char ch; seed = (unsigned int)time(NULL); - devrandom = fopen("/dev/urandom", "r"); - if(!devrandom) - devrandom = fopen("/dev/random", "r"); + devrandom = open("/dev/urandom", O_RDONLY); + if(devrandom < 0) + devrandom = open("/dev/random", O_RDONLY); - if (devrandom) { - seed ^= ((unsigned char)fgetc(devrandom)); - seed ^= ((unsigned char)fgetc(devrandom)) << 8; - seed ^= ((unsigned char)fgetc(devrandom)) << 16; - seed ^= ((unsigned char)fgetc(devrandom)) << 24; - fclose(devrandom); + if (devrandom >= 0) { + read(devrandom, &ch, 1); + seed ^= ch; + read(devrandom, &ch, 1); + seed ^= ch << 8; + read(devrandom, &ch, 1); + seed ^= ch << 16; + read(devrandom, &ch, 1); + seed ^= ch << 24; + close(devrandom); } srand(seed); return rand(); } +#if 0 +int main(int argc, char **argv) +{ + int i; + + for(i = 0; i < 25; i++) + printf("%i\n", random_int()); + + return 0; +} +#endif