authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-02 15:21:08-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-02 15:21:08-04:00
log0cccba71d41afee519d0000eb719f8c95f288166
tree430cf30a31f5b72fd7ca08c7075646599c1643e9
parent27e31f04758d95cb7cf51a74e2a3903553ce3bc5
signaturelock-open Commit is signed but in an unrecognized format.

better error message when os_file_overwrite fails


3 files changed, 25 insertions(+), 3 deletions(-)

src/error.cpp+5
......@@ -45,6 +45,11 @@ const char *err_str(Error err) {
4545 case ErrorUnknownOperatingSystem: return "unrecognized operating system";
4646 case ErrorUnknownABI: return "unrecognized C ABI";
4747 case ErrorInvalidFilename: return "invalid filename";
48 case ErrorDiskQuota: return "disk space quota exceeded";
49 case ErrorDiskSpace: return "out of disk space";
50 case ErrorUnexpectedWriteFailure: return "unexpected write failure";
51 case ErrorUnexpectedSeekFailure: return "unexpected seek failure";
52 case ErrorUnexpectedFileTruncationFailure: return "unexpected file truncation failure";
4853 }
4954 return "(invalid error)";
5055}
src/error.hpp+5
......@@ -47,6 +47,11 @@ enum Error {
4747 ErrorUnknownOperatingSystem,
4848 ErrorUnknownABI,
4949 ErrorInvalidFilename,
50 ErrorDiskQuota,
51 ErrorDiskSpace,
52 ErrorUnexpectedWriteFailure,
53 ErrorUnexpectedSeekFailure,
54 ErrorUnexpectedFileTruncationFailure,
5055};
5156
5257const char *err_str(Error err);
src/os.cpp+15-3
......@@ -2048,9 +2048,9 @@ Error os_file_overwrite(OsFile file, Buf *contents) {
20482048 return ErrorNone;
20492049#else
20502050 if (lseek(file, 0, SEEK_SET) == -1)
2051 return ErrorFileSystem;
2051 return ErrorUnexpectedSeekFailure;
20522052 if (ftruncate(file, 0) == -1)
2053 return ErrorFileSystem;
2053 return ErrorUnexpectedFileTruncationFailure;
20542054 for (;;) {
20552055 if (write(file, buf_ptr(contents), buf_len(contents)) == -1) {
20562056 switch (errno) {
......@@ -2060,8 +2060,20 @@ Error os_file_overwrite(OsFile file, Buf *contents) {
20602060 zig_unreachable();
20612061 case EBADF:
20622062 zig_unreachable();
2063 default:
2063 case EFAULT:
2064 zig_unreachable();
2065 case EDQUOT:
2066 return ErrorDiskQuota;
2067 case ENOSPC:
2068 return ErrorDiskSpace;
2069 case EFBIG:
2070 return ErrorFileTooBig;
2071 case EIO:
20642072 return ErrorFileSystem;
2073 case EPERM:
2074 return ErrorAccess;
2075 default:
2076 return ErrorUnexpectedWriteFailure;
20652077 }
20662078 }
20672079 return ErrorNone;