Mercurial > prosody-hg
annotate util-src/time.c @ 9659:86c431650dfd
net.websocket.frames: Prefer Lua 5.2 built-in bit module over LuaJIT version
When running on Lua 5.2 this makes sense since bit32 is usually already
loaded. It's sensible to prefer this going forward in case of
incompatibilities between the two variants.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 29 Nov 2018 16:53:22 +0100 |
| parents | 35807f02bdc7 |
| children | a374905e99ff |
| 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 |
| 9162 | 2 #define _POSIX_C_SOURCE 199309L |
|
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 | |
| 8 lua_Number tv2number(struct timespec *tv) { | |
| 9 return tv->tv_sec + tv->tv_nsec * 1e-9; | |
| 10 } | |
| 11 | |
| 12 int lc_time_realtime(lua_State *L) { | |
| 13 struct timespec t; | |
| 14 clock_gettime(CLOCK_REALTIME, &t); | |
| 15 lua_pushnumber(L, tv2number(&t)); | |
| 16 return 1; | |
| 17 } | |
| 18 | |
| 9163 | 19 int lc_time_monotonic(lua_State *L) { |
| 20 struct timespec t; | |
| 21 clock_gettime(CLOCK_MONOTONIC, &t); | |
| 22 lua_pushnumber(L, tv2number(&t)); | |
| 23 return 1; | |
| 24 } | |
| 25 | |
| 9162 | 26 int luaopen_util_time(lua_State *L) { |
| 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 } |
