int LS_VirtualDrive_FileExtract(LuaState* state, LuaStackObject* args) { VirtualDrive* drive = VirtualDriveFromLua(state, args[1]); const char* srcFileName = luaL_checkstring(*state, 2); const char* destFileName = luaL_checkstring(*state, 3); VirtualDrive::FileEntry* entry = drive->FindFileEntry(srcFileName); if (!entry) { state->PushBoolean(false); return 1; } VirtualFile file; if (!file.Open(*drive, srcFileName)) { state->PushBoolean(false); return 1; } bool ret = Copy(file, destFileName); /* FILETIME createTime; FILETIME accessTime; FILETIME writeTime; HANDLE handle = CreateFile(destFileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); GetFileTime(handle, &createTime, &accessTime, &writeTime); writeTime.dwLowDateTime = args[ 2 ].GetInteger(); writeTime.dwHighDateTime = args[ 3 ].GetInteger(); SetFileTime(handle, &createTime, &accessTime, &writeTime); CloseHandle(handle); */ state->PushBoolean(ret); return 1; }
int LS_VirtualDrive_FindFileEntry(LuaState* state, LuaStackObject* args) { VirtualDrive* drive = VirtualDriveFromLua(state, args[1]); const char* fileName = luaL_checkstring(*state, 2); VirtualDrive::FileEntry* entry = drive->FindFileEntry(fileName); if (!entry) return 0; BuildFileEntry(state, entry); return 1; }