#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>/* it's really stupid that there isn't a syscall for this */staticintfd=-1;voidrandombytes(unsignedchar*x,unsignedlonglongxlen){inti;if(fd==-1){for(;;){fd=open("/dev/urandom",O_RDONLY);if(fd!=-1)break;sleep(1);}}while(xlen>0){if(xlen<1048576)i=xlen;elsei=1048576;i=read(fd,x,i);if(i<1){sleep(1);continue;}x+=i;xlen-=i;}}