]> foleosoft.com Git - QAnsel.git/commitdiff
Thu Mar 21 09:22:25 AM EDT 2024
authormiha-q <>
Thu, 21 Mar 2024 13:22:25 +0000 (09:22 -0400)
committermiha-q <>
Thu, 21 Mar 2024 13:22:25 +0000 (09:22 -0400)
src/bytecode.c
src/bytecode.h
src/hardware.c
src/hardware.h

index 6577ebc159a691c9792f8a9ded6b99e861d7eb59..520207b5d53ef423bd47efd8fe004363a83ad70e 100644 (file)
@@ -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)
        {
index 3b211baa9ed884ce3c94e00011f5a677fc4b3e55..0e472bbcb7319a4e2933ff4548dbcc2d0217ba59 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef __BYTECODE_H__
 #define __BYTECODE_H__
 
-#include <time.h>
 #include "complex.h"
 #include "context.h"
 #include "display.h"
index 0283ca2a48bdb4ebaf92a676256a7352bff1f567..948df6ee9dcc9b668000e549cb3a0993eaf5d6cc 100644 (file)
@@ -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
+}
index 70041e607edc00ba4dd6fcbaa457d1f0cb27a725..c843ece3b2e5d717d45a602240c5b886059cd81a 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef __HARDWARE_H__
 #define __HARDWARE_H__
 
+#include <time.h>
 #include <stddef.h>
 #if defined(_WIN32) || defined(_WIN64)
 #include <windows.h>
 #include <sys/sysctl.h>
 #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