From 83cdca1018d0f62698605b31db82298fdd249e3d Mon Sep 17 00:00:00 2001 From: miha-q <> Date: Thu, 21 Mar 2024 09:22:25 -0400 Subject: [PATCH] Thu Mar 21 09:22:25 AM EDT 2024 --- src/bytecode.c | 5 +---- src/bytecode.h | 1 - src/hardware.c | 22 ++++++++++++++++++++++ src/hardware.h | 3 +++ 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/bytecode.c b/src/bytecode.c index 6577ebc..520207b 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -1464,10 +1464,7 @@ void qansel_run(QAnselContext* ctx, unsigned char* program, int programSize, int int qanselExecuteBytecode(unsigned char* buff, int sizeofbuff, QAnselContext* ctx) { if (!qanselContextValidate(ctx)) return 0; - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - float seed = (float)((unsigned long)ts.tv_sec * 1000000000LL + ts.tv_nsec); - qansel_rand_s(seed); + qansel_rand_s(qansel_hardware_getseed()); if (ctx != NULL && ctx->hidden_variable != 0) { diff --git a/src/bytecode.h b/src/bytecode.h index 3b211ba..0e472bb 100644 --- a/src/bytecode.h +++ b/src/bytecode.h @@ -1,7 +1,6 @@ #ifndef __BYTECODE_H__ #define __BYTECODE_H__ -#include #include "complex.h" #include "context.h" #include "display.h" diff --git a/src/hardware.c b/src/hardware.c index 0283ca2..948df6e 100644 --- a/src/hardware.c +++ b/src/hardware.c @@ -88,3 +88,25 @@ unsigned char qansel_hardware_rand() #endif } + +float qansel_hardware_getseed() +{ + #ifdef CLOCK_MONOTONIC + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + float seed = (float)((unsigned long)ts.tv_sec * 1000000000LL + ts.tv_nsec); + #else + FILE* f = popen("date +%s", "r"); + int c; + int tsl = 0; + char ts[128]; + + while ( (c = fgetc(f)) != EOF ) + { + ts[tsl++] = c; + } + ts[tsl++] = 0; + fclose(f); + float seed = atof(ts); + #endif +} diff --git a/src/hardware.h b/src/hardware.h index 70041e6..c843ece 100644 --- a/src/hardware.h +++ b/src/hardware.h @@ -1,6 +1,7 @@ #ifndef __HARDWARE_H__ #define __HARDWARE_H__ +#include #include #if defined(_WIN32) || defined(_WIN64) #include @@ -11,10 +12,12 @@ #include #endif + int qansel___get_core_count(); int qansel_get_core_count(); unsigned long int qansel_get_time(); int qansel_hardware_rand_supported(); unsigned char qansel_hardware_rand(); +float qansel_hardware_getseed(); #endif -- 2.39.5