#include "os/c-api/il2cpp-config-platforms.h" #if !IL2CPP_TINY_WITHOUT_DEBUGGER #include "os/File.h" #include "os/c-api/File-c-api.h" #include "os/c-api/Allocator.h" extern "C" { int32_t UnityPalIsatty(UnityPalFileHandle* fileHandle) { return il2cpp::os::File::Isatty(fileHandle); } UnityPalFileHandle* UnityPalGetStdInput() { return il2cpp::os::File::GetStdInput(); } UnityPalFileHandle* UnityPalGetStdOutput() { return il2cpp::os::File::GetStdOutput(); } UnityPalFileHandle* UnityPalGetStdError() { return il2cpp::os::File::GetStdError(); } int32_t UnityPalCreatePipe(UnityPalFileHandle** read_handle, UnityPalFileHandle** write_handle) { return il2cpp::os::File::CreatePipe(read_handle, write_handle); } int32_t UnityPalCreatePipe_With_Error(UnityPalFileHandle** read_handle, UnityPalFileHandle** write_handle, int* error) { return il2cpp::os::File::CreatePipe(read_handle, write_handle, error); } FileType UnityPalGetFileType(UnityPalFileHandle* handle) { return il2cpp::os::File::GetFileType(handle); } UnityPalFileAttributes UnityPalGetFileAttributes(const char* path, int* error) { return il2cpp::os::File::GetFileAttributes(path, error); } int32_t UnityPalSetFileAttributes(const char* path, UnityPalFileAttributes attributes, int* error) { return il2cpp::os::File::SetFileAttributes(path, attributes, error); } int32_t UnityPalGetFileStat(const char* path, UnityPalFileStat * stat, int* error) { il2cpp::os::FileStat cppStat; bool result = il2cpp::os::File::GetFileStat(path, &cppStat, error); stat->name = Allocator::CopyToAllocatedStringBuffer(cppStat.name); stat->attributes = cppStat.attributes; stat->creation_time = cppStat.creation_time; stat->last_access_time = cppStat.last_access_time; stat->last_write_time = cppStat.last_write_time; stat->length = cppStat.length; return result; } int32_t UnityPalCopyFile(const char* src, const char* dest, int32_t overwrite, int* error) { return il2cpp::os::File::CopyFile(src, dest, overwrite, error); } int32_t UnityPalMoveFile(const char* src, const char* dest, int* error) { return il2cpp::os::File::MoveFile(src, dest, error); } int32_t UnityPalDeleteFile(const char* path, int *error) { return il2cpp::os::File::DeleteFile(path, error); } int32_t UnityPalReplaceFile(const char* sourceFileName, const char* destinationFileName, const char* destinationBackupFileName, int32_t ignoreMetadataErrors, int* error) { // It is legal for any of these paramteres to be NULL, need // to check to prevent bad NULL ptr issues. std::string source; std::string dest; std::string destbackup; if (sourceFileName != NULL) { source = sourceFileName; } if (destinationFileName != NULL) { dest = destinationFileName; } if (destinationBackupFileName != NULL) { destbackup = destinationBackupFileName; } return il2cpp::os::File::ReplaceFile(source, dest, destbackup, ignoreMetadataErrors, error); } UnityPalFileHandle* UnityPalOpen(const char* path, int openMode, int accessMode, int shareMode, int options, int *error) { int localError; il2cpp::os::FileHandle* handle = il2cpp::os::File::Open(path, openMode, accessMode, shareMode, options, &localError); if (error != NULL) *error = localError; if (localError != il2cpp::os::kErrorCodeSuccess) return NULL; return handle; } int32_t UnityPalClose(UnityPalFileHandle* handle, int *error) { return il2cpp::os::File::Close(handle, error); } int32_t UnityPalSetFileTime(UnityPalFileHandle* handle, int64_t creation_time, int64_t last_access_time, int64_t last_write_time, int* error) { return il2cpp::os::File::SetFileTime(handle, creation_time, last_access_time, last_write_time, error); } int64_t UnityPalGetLength(UnityPalFileHandle* handle, int *error) { return il2cpp::os::File::GetLength(handle, error); } int32_t UnityPalTruncate(UnityPalFileHandle* handle, int *error) { return il2cpp::os::File::Truncate(handle, error); } int32_t UnityPalSetLength(UnityPalFileHandle* handle, int64_t length, int *error) { return il2cpp::os::File::SetLength(handle, length, error); } int64_t UnityPalSeek(UnityPalFileHandle* handle, int64_t offset, int origin, int *error) { return il2cpp::os::File::Seek(handle, offset, origin, error); } int UnityPalRead(UnityPalFileHandle* handle, char *dest, int count, int *error) { return il2cpp::os::File::Read(handle, dest, count, error); } int32_t UnityPalWrite(UnityPalFileHandle* handle, const char* buffer, int count, int *error) { return il2cpp::os::File::Write(handle, buffer, count, error); } int32_t UnityPalFlush(UnityPalFileHandle* handle, int* error) { return il2cpp::os::File::Flush(handle, error); } void UnityPalLock(UnityPalFileHandle* handle, int64_t position, int64_t length, int* error) { return il2cpp::os::File::Lock(handle, position, length, error); } void UnityPalUnlock(UnityPalFileHandle* handle, int64_t position, int64_t length, int* error) { return il2cpp::os::File::Unlock(handle, position, length, error); } int32_t UnityPalDuplicateHandle(UnityPalFileHandle* source_process_handle, UnityPalFileHandle* source_handle, UnityPalFileHandle* target_process_handle, UnityPalFileHandle** target_handle, int access, int inherit, int options, int* error) { return il2cpp::os::File::DuplicateHandle(source_process_handle, source_handle, target_process_handle, target_handle, access, inherit, options, error); } int32_t UnityPalIsExecutable(const char* filename) { return il2cpp::os::File::IsExecutable(filename); } } #endif