view util-src/time.c @ 9340:368b092bf4bf

mod_storage_memory: Fix saving of remaining items during deletion All data is compiled into functions that return new copies in order to prevent mutation of stored data. This has downsides. Also an ugly hack.
author Kim Alvefur <zash@zash.se>
date Sat, 22 Sep 2018 16:03:50 +0200
parents 35807f02bdc7
children a374905e99ff
line wrap: on
line source

#ifndef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 199309L
#endif

#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 lc_time_monotonic(lua_State *L) {
	struct timespec t;
	clock_gettime(CLOCK_MONOTONIC, &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");
		lua_pushcfunction(L, lc_time_monotonic);
		lua_setfield(L, -2, "monotonic");
	}
	return 1;
}