Software /
code /
prosody
Annotate
util-src/time.c @ 13248:db433ed3135c
Merge 0.12->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 25 Jul 2023 12:35:11 +0200 |
parent | 12976:a187600ec7d6 |
rev | line source |
---|---|
9164
35807f02bdc7
util.time: Allow for already set constant
Kim Alvefur <zash@zash.se>
parents:
9163
diff
changeset
|
1 #ifndef _POSIX_C_SOURCE |
9680
a374905e99ff
util.time: Bump POSIX_C_SOURCE to ensure visibility of CLOCK_MONOTONIC on FreeBSD (fixes #1253)
Matthew Wild <mwild1@gmail.com>
parents:
9164
diff
changeset
|
2 #define _POSIX_C_SOURCE 200809L |
9164
35807f02bdc7
util.time: Allow for already set constant
Kim Alvefur <zash@zash.se>
parents:
9163
diff
changeset
|
3 #endif |
9162 | 4 |
5 #include <time.h> | |
6 #include <lua.h> | |
7 | |
10480
94cacf9fd0ae
util.*.c: Add static qualifiers everywhere
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
9680
diff
changeset
|
8 static lua_Number tv2number(struct timespec *tv) { |
9162 | 9 return tv->tv_sec + tv->tv_nsec * 1e-9; |
10 } | |
11 | |
10480
94cacf9fd0ae
util.*.c: Add static qualifiers everywhere
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
9680
diff
changeset
|
12 static int lc_time_realtime(lua_State *L) { |
9162 | 13 struct timespec t; |
14 clock_gettime(CLOCK_REALTIME, &t); | |
15 lua_pushnumber(L, tv2number(&t)); | |
16 return 1; | |
17 } | |
18 | |
10480
94cacf9fd0ae
util.*.c: Add static qualifiers everywhere
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
9680
diff
changeset
|
19 static int lc_time_monotonic(lua_State *L) { |
9163 | 20 struct timespec t; |
21 clock_gettime(CLOCK_MONOTONIC, &t); | |
22 lua_pushnumber(L, tv2number(&t)); | |
23 return 1; | |
24 } | |
25 | |
12976
a187600ec7d6
util: Add compat for prosody module name change to C sources
Kim Alvefur <zash@zash.se>
parents:
10480
diff
changeset
|
26 int luaopen_prosody_util_time(lua_State *L) { |
9162 | 27 lua_createtable(L, 0, 2); |
28 { | |
29 lua_pushcfunction(L, lc_time_realtime); | |
30 lua_setfield(L, -2, "now"); | |
9163 | 31 lua_pushcfunction(L, lc_time_monotonic); |
32 lua_setfield(L, -2, "monotonic"); | |
9162 | 33 } |
34 return 1; | |
35 } | |
12976
a187600ec7d6
util: Add compat for prosody module name change to C sources
Kim Alvefur <zash@zash.se>
parents:
10480
diff
changeset
|
36 int luaopen_util_time(lua_State *L) { |
a187600ec7d6
util: Add compat for prosody module name change to C sources
Kim Alvefur <zash@zash.se>
parents:
10480
diff
changeset
|
37 return luaopen_prosody_util_time(L); |
a187600ec7d6
util: Add compat for prosody module name change to C sources
Kim Alvefur <zash@zash.se>
parents:
10480
diff
changeset
|
38 } |