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

index 948df6ee9dcc9b668000e549cb3a0993eaf5d6cc..08a0fd0e7da5c46ed7f65271047a13f3096452dc 100644 (file)
@@ -91,22 +91,32 @@ unsigned char qansel_hardware_rand()
 
 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");
+    #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;
-    int tsl = 0;
     char ts[128];
-    
+    int tsl = 0;
     while ( (c = fgetc(f)) != EOF )
     {
-        ts[tsl++] = c;
+        if ((c >= '0' && c <= '9') || c == '.')
+        {
+            ts[tsl++] = c;
+        }
+        else
+        {
+            break;
+        }
     }
     ts[tsl++] = 0;
     fclose(f);
-    float seed = atof(ts);
+       float seed = atof(ts);
+    return seed;
+    #else
+        #error "Uknown platform"
+        return 0;
     #endif
+
 }
index b600597ddcb1ae9a346c6168c4daccd7cf5e9682..1d7e17bc5ca56314ddf74ae0b6f8de8bfc95fd82 100644 (file)
@@ -1,20 +1,16 @@
 #ifndef __HARDWARE_H__
 #define __HARDWARE_H__
 
-#include <time.h>
+#include <stdlib.h>
 #include <stddef.h>
 #if defined(_WIN32) || defined(_WIN64)
 #include <windows.h>
 #elif defined(__linux__)
+#include <stdio.h>
 #include <unistd.h>
 #include <sys/time.h>
-#elif defined(__APPLE__)
-#include <sys/sysctl.h>
-#endif
-
-#ifndef CLOCK_MONOTONIC
-#include <stdio.h>
-#include <stdlib.h>
+#else
+#error "Unknown platform"
 #endif
 
 int qansel___get_core_count();