int LS_VirtualDrive_FileGetLength(LuaState* state) { LuaStack args(state); VirtualDrive* drive = VirtualDriveFromLua(state, args[1]); VirtualFileHandle* fileHandle = VirtualFileHandleHandleFromLua(state, args[2]); state->PushNumber((lua_Number)drive->FileGetLength(*fileHandle)); return 1; }
int LS_VirtualDrive_FileRead(LuaState* state) { LuaStack args(state); VirtualDrive* drive = VirtualDriveFromLua(state, args[1]); VirtualFileHandle* fileHandle = VirtualFileHandleHandleFromLua(state, args[2]); long len = luaL_optlong(*state, 3, -1); if (len == 0) len = (long)drive->FileGetLength(*fileHandle); char* buffer = new char[len]; UINT nr = (UINT)drive->FileRead(*fileHandle, buffer, len); state->PushLString(buffer, nr); delete[] buffer; return 1; }