|
|
|
@ -573,12 +573,40 @@ static int magnet_stat_field(lua_State *L) {
|
|
|
|
|
lua_pushinteger(L, TIME64_CAST(sce->st.st_atime));
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
if (0 == strcmp(k.ptr, "st_atim")) {
|
|
|
|
|
lua_pushinteger(L, TIME64_CAST(sce->st.st_atime));
|
|
|
|
|
#ifdef st_atime /* high-precision timestamp if available */
|
|
|
|
|
#if defined(__APPLE__) && defined(__MACH__)
|
|
|
|
|
lua_pushinteger(L, sce->st.st_atimespec.tv_nsec);
|
|
|
|
|
#else
|
|
|
|
|
lua_pushinteger(L, sce->st.st_atim.tv_nsec);
|
|
|
|
|
#endif
|
|
|
|
|
#else
|
|
|
|
|
lua_pushinteger(L, 0);
|
|
|
|
|
#endif
|
|
|
|
|
lua_pushcclosure(L, magnet_return_upvalue2, 2);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 'c': /* st_ctime */
|
|
|
|
|
if (0 == strcmp(k.ptr, "st_ctime")) {
|
|
|
|
|
lua_pushinteger(L, TIME64_CAST(sce->st.st_ctime));
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
if (0 == strcmp(k.ptr, "st_ctim")) {
|
|
|
|
|
lua_pushinteger(L, TIME64_CAST(sce->st.st_ctime));
|
|
|
|
|
#ifdef st_ctime /* high-precision timestamp if available */
|
|
|
|
|
#if defined(__APPLE__) && defined(__MACH__)
|
|
|
|
|
lua_pushinteger(L, sce->st.st_ctimespec.tv_nsec);
|
|
|
|
|
#else
|
|
|
|
|
lua_pushinteger(L, sce->st.st_ctim.tv_nsec);
|
|
|
|
|
#endif
|
|
|
|
|
#else
|
|
|
|
|
lua_pushinteger(L, 0);
|
|
|
|
|
#endif
|
|
|
|
|
lua_pushcclosure(L, magnet_return_upvalue2, 2);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 'i': /* st_ino */
|
|
|
|
|
if (0 == strcmp(k.ptr, "st_ino")) {
|
|
|
|
@ -591,6 +619,20 @@ static int magnet_stat_field(lua_State *L) {
|
|
|
|
|
lua_pushinteger(L, TIME64_CAST(sce->st.st_mtime));
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
if (0 == strcmp(k.ptr, "st_mtim")) {
|
|
|
|
|
lua_pushinteger(L, TIME64_CAST(sce->st.st_mtime));
|
|
|
|
|
#ifdef st_mtime /* high-precision timestamp if available */
|
|
|
|
|
#if defined(__APPLE__) && defined(__MACH__)
|
|
|
|
|
lua_pushinteger(L, sce->st.st_mtimespec.tv_nsec);
|
|
|
|
|
#else
|
|
|
|
|
lua_pushinteger(L, sce->st.st_mtim.tv_nsec);
|
|
|
|
|
#endif
|
|
|
|
|
#else
|
|
|
|
|
lua_pushinteger(L, 0);
|
|
|
|
|
#endif
|
|
|
|
|
lua_pushcclosure(L, magnet_return_upvalue2, 2);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
if (0 == strcmp(k.ptr, "st_mode")) {
|
|
|
|
|
lua_pushinteger(L, sce->st.st_mode);
|
|
|
|
|
return 1;
|
|
|
|
|