diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-03-21 20:32:48 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-03-21 20:32:48 -0400 |
| commit | 4b0ddb817bb5d4effd8cd2dd0844ac278e35e1d5 (patch) | |
| tree | ea0112fc930bf6a51b62136f10a60560c3c96bd9 /src/os.cpp | |
| parent | 28ad78cb7f4a567ce6a595b8ff466e90b311f3e4 (diff) | |
| download | zig-4b0ddb817bb5d4effd8cd2dd0844ac278e35e1d5.tar.gz zig-4b0ddb817bb5d4effd8cd2dd0844ac278e35e1d5.zip | |
zig cc: better support for the preprocessor option (-E)
Diffstat (limited to 'src/os.cpp')
| -rw-r--r-- | src/os.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/os.cpp b/src/os.cpp index f65a578e17..351b61cd66 100644 --- a/src/os.cpp +++ b/src/os.cpp @@ -1051,6 +1051,30 @@ static Error copy_open_files(FILE *src_f, FILE *dest_f) { } } +Error os_dump_file(Buf *src_path, FILE *dest_file) { + Error err; + + FILE *src_f = fopen(buf_ptr(src_path), "rb"); + if (!src_f) { + int err = errno; + if (err == ENOENT) { + return ErrorFileNotFound; + } else if (err == EACCES || err == EPERM) { + return ErrorAccess; + } else { + return ErrorFileSystem; + } + } + copy_open_files(src_f, dest_file); + if ((err = copy_open_files(src_f, dest_file))) { + fclose(src_f); + return err; + } + + fclose(src_f); + return ErrorNone; +} + #if defined(ZIG_OS_WINDOWS) static void windows_filetime_to_os_timestamp(FILETIME *ft, OsTimeStamp *mtime) { mtime->sec = (((ULONGLONG) ft->dwHighDateTime) << 32) + ft->dwLowDateTime; |
