123a124 > #ifndef NO_RAND_SCREEN 513a515,524 > #else /* ifndef NO_RAND_SCREEN ... else */ > #include > #include > int RAND_poll(void) > { > unsigned long l; > int curr_pid = _getpid(); > #ifdef DEVRANDOM > FILE *fh; > #endif 514a526,560 > #ifdef DEVRANDOM > /* Use a random entropy pool device. Linux, FreeBSD and OpenBSD > * have this. Use /dev/urandom if you can as /dev/random may block > * if it runs out of random entries. */ > > if ((fh = fopen(DEVRANDOM, "r")) != NULL) > { > unsigned char tmpbuf[ENTROPY_NEEDED]; > int n; > > setvbuf(fh, NULL, _IONBF, 0); > n=fread((unsigned char *)tmpbuf,1,ENTROPY_NEEDED,fh); > fclose(fh); > RAND_add(tmpbuf,sizeof tmpbuf,n); > memset(tmpbuf,0,n); > } > #endif > > /* put in some default random data, we need more than just this */ > l=(long)curr_pid; > RAND_add(&l,sizeof(l),0); > l=(long)time(NULL); > RAND_add(&l,sizeof(l),0); > l=(long)clock(); > RAND_add(&l,sizeof(l),0); > > #ifdef DEVRANDOM > return 1; > #endif > return 0; > } > > > #endif /* NO_RAND_SCREEN */ >