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) {...@@ -45,6 +45,11 @@ const char *err_str(Error err) {
45 case ErrorUnknownOperatingSystem: return "unrecognized operating system";45 case ErrorUnknownOperatingSystem: return "unrecognized operating system";
46 case ErrorUnknownABI: return "unrecognized C ABI";46 case ErrorUnknownABI: return "unrecognized C ABI";
47 case ErrorInvalidFilename: return "invalid filename";47 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";
48 }53 }
49 return "(invalid error)";54 return "(invalid error)";
50}55}
src/error.hpp+5
...@@ -47,6 +47,11 @@ enum Error {...@@ -47,6 +47,11 @@ enum Error {
47 ErrorUnknownOperatingSystem,47 ErrorUnknownOperatingSystem,
48 ErrorUnknownABI,48 ErrorUnknownABI,
49 ErrorInvalidFilename,49 ErrorInvalidFilename,
50 ErrorDiskQuota,
51 ErrorDiskSpace,
52 ErrorUnexpectedWriteFailure,
53 ErrorUnexpectedSeekFailure,
54 ErrorUnexpectedFileTruncationFailure,
50};55};
5156
52const char *err_str(Error err);57const char *err_str(Error err);
src/os.cpp+15-3
...@@ -2048,9 +2048,9 @@ Error os_file_overwrite(OsFile file, Buf *contents) {...@@ -2048,9 +2048,9 @@ Error os_file_overwrite(OsFile file, Buf *contents) {
2048 return ErrorNone;2048 return ErrorNone;
2049#else2049#else
2050 if (lseek(file, 0, SEEK_SET) == -1)2050 if (lseek(file, 0, SEEK_SET) == -1)
2051 return ErrorFileSystem;2051 return ErrorUnexpectedSeekFailure;
2052 if (ftruncate(file, 0) == -1)2052 if (ftruncate(file, 0) == -1)
2053 return ErrorFileSystem;2053 return ErrorUnexpectedFileTruncationFailure;
2054 for (;;) {2054 for (;;) {
2055 if (write(file, buf_ptr(contents), buf_len(contents)) == -1) {2055 if (write(file, buf_ptr(contents), buf_len(contents)) == -1) {
2056 switch (errno) {2056 switch (errno) {
...@@ -2060,8 +2060,20 @@ Error os_file_overwrite(OsFile file, Buf *contents) {...@@ -2060,8 +2060,20 @@ Error os_file_overwrite(OsFile file, Buf *contents) {
2060 zig_unreachable();2060 zig_unreachable();
2061 case EBADF:2061 case EBADF:
2062 zig_unreachable();2062 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:
2064 return ErrorFileSystem;2072 return ErrorFileSystem;
2073 case EPERM:
2074 return ErrorAccess;
2075 default:
2076 return ErrorUnexpectedWriteFailure;
2065 }2077 }
2066 }2078 }
2067 return ErrorNone;2079 return ErrorNone;