| 957 | } |
| 958 | |
| 959 | Result<bool> DeleteFile(const PlatformFilename& file_path, bool allow_not_found) { |
| 960 | #ifdef _WIN32 |
| 961 | if (DeleteFileW(file_path.ToNative().c_str())) { |
| 962 | return true; |
| 963 | } else { |
| 964 | int errnum = GetLastError(); |
| 965 | if (!allow_not_found || errnum != ERROR_FILE_NOT_FOUND) { |
| 966 | return IOErrorFromWinError(GetLastError(), "Cannot delete file '", |
| 967 | file_path.ToString(), "'"); |
| 968 | } |
| 969 | } |
| 970 | #else |
| 971 | if (unlink(file_path.ToNative().c_str()) == 0) { |
| 972 | return true; |
| 973 | } else { |
| 974 | if (!allow_not_found || errno != ENOENT) { |
| 975 | return IOErrorFromErrno(errno, "Cannot delete file '", file_path.ToString(), "'"); |
| 976 | } |
| 977 | } |
| 978 | #endif |
| 979 | return false; |
| 980 | } |
| 981 | |
| 982 | Result<bool> FileExists(const PlatformFilename& path) { |
| 983 | #ifdef _WIN32 |