]> foleosoft.com Git - QAnsel.git/commitdiff
Thu Mar 21 10:56:37 AM EDT 2024
authormiha-q <>
Thu, 21 Mar 2024 14:56:37 +0000 (10:56 -0400)
committermiha-q <>
Thu, 21 Mar 2024 14:56:37 +0000 (10:56 -0400)
src/hardware.c
src/hardware.h

index ab56c4aa8e20830f07ef4f5e595f6397fef2b6f9..c15869a57461c593306deb4e24611a416a56902d 100644 (file)
@@ -91,8 +91,37 @@ unsigned char qansel_hardware_rand()
 
 float qansel_hardware_getseed()
 {
-    struct timespec ts;
-    clock_gettime(CLOCK_MONOTONIC, &ts);
-    float seed = (float)((unsigned long)ts.tv_sec * 1000000000LL + ts.tv_nsec);
+    #if defined(_WIN32) || defined(_WIN64)
+        #error "implement windows seed"
+    #elif defined(__linux__)
+    unsigned long long int tsi = 0;
+    FILE* f = fopen("/proc/uptime", "r");
+    int c;
+    char ts[128];
+    int tsl = 0;
+    while ( (c = fgetc(f)) != EOF )
+    {
+        if ((c >= '0' && c <= '9') || c == '.')
+        {
+            ts[tsl++] = c;
+        }
+        else
+        {
+            break;
+        }
+    }
+    ts[tsl++] = 0;
+    fclose(f);
+       float seed = atof(ts);
     return seed;
+    #else
+        #error "Uknown platform"
+        return 0;
+    #endif
+
+    //struct timespec ts;
+    //clock_gettime(CLOCK_MONOTONIC, &ts);
+    //float seed = (float)((unsigned long)ts.tv_sec * 1000000000LL + ts.tv_nsec);
+    //return seed;
+
 }
index 16797fb51be5126898ab5fdefeab7114a8bb45d4..1d7e17bc5ca56314ddf74ae0b6f8de8bfc95fd82 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __HARDWARE_H__
 #define __HARDWARE_H__
 
-#include <time.h>
+#include <stdlib.h>
 #include <stddef.h>
 #if defined(_WIN32) || defined(_WIN64)
 #include <windows.h>