+#include <fcntl.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <term.h>
#include <time.h>
+#include <unistd.h>
#define A_POGRUBIONY (1 << 0)
static void inicjuj_rng()
{
- unsigned ziarno = 0;
- FILE* f = fopen("/dev/urandom", "rb");
- if (f != NULL) {
- unsigned nowe_ziarno;
- if (fread(&nowe_ziarno, sizeof nowe_ziarno, 1, f) == 1) {
- ziarno = nowe_ziarno;
+ bool ok = false;
+ unsigned ziarno;
+ int f = open("/dev/urandom", O_RDONLY);
+ if (f != -1) {
+ if (read(f, &ziarno, sizeof ziarno) == sizeof ziarno) {
+ ok = true;
}
- fclose(f);
+ close(f);
}
- if (ziarno == 0) {
+ if (!ok) {
ziarno = time(NULL);
}
srand(ziarno);