diff options
author | Kim Alvefur <zash@zash.se> | 2017-03-09 04:34:28 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-03-09 04:34:28 +0100 |
commit | b0e0a1d4878fe682389f2a5097b91814896b318d (patch) | |
tree | b8907b558b3fd4862e165a7f9f449b826b5f2890 | |
parent | 1a41278b49862190aa475660119963201220a73b (diff) | |
download | prosody-b0e0a1d4878fe682389f2a5097b91814896b318d.tar.gz prosody-b0e0a1d4878fe682389f2a5097b91814896b318d.zip |
util.time: Convert to C
-rw-r--r-- | util-src/GNUmakefile | 2 | ||||
-rw-r--r-- | util-src/time.c | 24 | ||||
-rw-r--r-- | util/time.lua | 8 |
3 files changed, 25 insertions, 9 deletions
diff --git a/util-src/GNUmakefile b/util-src/GNUmakefile index 4b8540c5..dfe3950f 100644 --- a/util-src/GNUmakefile +++ b/util-src/GNUmakefile @@ -6,7 +6,7 @@ CFLAGS+=-I$(LUA_INCDIR) INSTALL_DATA=install -m644 TARGET?=../util/ -ALL=encodings.so hashes.so net.so pposix.so signal.so table.so ringbuffer.so +ALL=encodings.so hashes.so net.so pposix.so signal.so table.so ringbuffer.so time.so ifdef RANDOM ALL+=crand.so diff --git a/util-src/time.c b/util-src/time.c new file mode 100644 index 00000000..eed5bf0f --- /dev/null +++ b/util-src/time.c @@ -0,0 +1,24 @@ +#define _POSIX_C_SOURCE 199309L + +#include <time.h> +#include <lua.h> + +lua_Number tv2number(struct timespec *tv) { + return tv->tv_sec + tv->tv_nsec * 1e-9; +} + +int lc_time_realtime(lua_State *L) { + struct timespec t; + clock_gettime(CLOCK_REALTIME, &t); + lua_pushnumber(L, tv2number(&t)); + return 1; +} + +int luaopen_util_time(lua_State *L) { + lua_createtable(L, 0, 2); + { + lua_pushcfunction(L, lc_time_realtime); + lua_setfield(L, -2, "now"); + } + return 1; +} diff --git a/util/time.lua b/util/time.lua deleted file mode 100644 index 84cff877..00000000 --- a/util/time.lua +++ /dev/null @@ -1,8 +0,0 @@ --- Import gettime() from LuaSocket, as a way to access high-resolution time --- in a platform-independent way - -local socket_gettime = require "socket".gettime; - -return { - now = socket_gettime; -} |