Sha256: 94dbf00b1e53d1e1dbbc95e76a50bd7f7f0468b8c1daffd61ae22ec56654debe
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
#include <time.h> #define lib_os_c #define LUA_LIB #include "lua.h" #include "lauxlib.h" #include "lj_err.h" static int os_clock(lua_State *L) { setnumV(L->top++, ((lua_Number)clock())*(1.0/(lua_Number)CLOCKS_PER_SEC)); return 1; } static int getboolfield(lua_State *L, const char *key) { int res; lua_getfield(L, -1, key); res = lua_isnil(L, -1) ? -1 : lua_toboolean(L, -1); lua_pop(L, 1); return res; } static int getfield(lua_State *L, const char *key, int d) { int res; lua_getfield(L, -1, key); if (lua_isnumber(L, -1)) { res = (int)lua_tointeger(L, -1); } else { if (d < 0) lj_err_callerv(L, LJ_ERR_OSDATEF, key); res = d; } lua_pop(L, 1); return res; } static int os_time(lua_State *L) { time_t t; if (lua_isnoneornil(L, 1)) { /* called without args? */ t = time(NULL); /* get current time */ } else { struct tm ts; luaL_checktype(L, 1, LUA_TTABLE); lua_settop(L, 1); /* make sure table is at the top */ ts.tm_sec = getfield(L, "sec", 0); ts.tm_min = getfield(L, "min", 0); ts.tm_hour = getfield(L, "hour", 12); ts.tm_mday = getfield(L, "day", -1); ts.tm_mon = getfield(L, "month", -1) - 1; ts.tm_year = getfield(L, "year", -1) - 1900; ts.tm_isdst = getboolfield(L, "isdst"); t = mktime(&ts); } if (t == (time_t)(-1)) lua_pushnil(L); else lua_pushnumber(L, (lua_Number)t); return 1; } static int os_difftime(lua_State *L) { lua_pushnumber(L, difftime((time_t)(luaL_checknumber(L, 1)), (time_t)(luaL_optnumber(L, 2, (lua_Number)0)))); return 1; } static const luaL_Reg libluaos[] = { {"clock", os_clock}, {"time", os_time}, {"difftime", os_difftime}, {NULL, NULL} }; int luaopen_luaos(lua_State *L) { luaL_checkversion(L); luaL_register(L, "perf", libluaos); return 1; }
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
immunio-1.0.17 | lua-hooks/ext/perf/luaoslib.c |
immunio-1.0.15 | lua-hooks/ext/perf/luaoslib.c |
immunio-1.0.14 | lua-hooks/ext/perf/luaoslib.c |