blob: 2f2edcc0a764f16ce0cf4965fae8b708acc71574 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
diff -ru coreutils-9.1.orig/src/uptime.c coreutils-9.1/src/uptime.c
--- coreutils-9.1.orig/src/uptime.c 2022-04-08 13:22:18.000000000 +0200
+++ coreutils-9.1/src/uptime.c 2023-09-06 12:26:22.909930119 +0200
@@ -30,6 +30,11 @@
# include <OS.h>
#endif
+#ifdef __midipix__
+#undef sa_handler
+#include <ntapi/ntapi.h>
+#endif
+
#include "c-strtod.h"
#include "die.h"
#include "error.h"
@@ -59,6 +64,26 @@
struct tm *tmn;
double avg[3];
int loads;
+#ifdef __midipix__
+ ntapi_vtbl *__ntapi;
+ nt_system_time_of_day_information stodi;
+
+ if((ntapi_init(&__ntapi)) == 0)
+ {
+ char buf[BUFSIZ];
+ long long nt_time;
+ __ntapi->zw_query_system_information(NT_SYSTEM_TIME_OF_DAY_INFORMATION, &stodi, sizeof(stodi), NULL);
+ nt_time = (stodi.current_time.quad - stodi.boot_time.quad) / 100000ULL;
+ sprintf(buf, "%u.%02u", nt_time / 100, nt_time % 100);
+ {
+ char *end_ptr;
+ double upsecs = c_strtod (buf, &end_ptr);
+ if (buf != end_ptr)
+ uptime = (0 <= upsecs && upsecs < TYPE_MAXIMUM (time_t)
+ ? upsecs : -1);
+ }
+ }
+#endif
#ifdef HAVE_PROC_UPTIME
FILE *fp;
|