zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit fc20a589931ab9aac6f51e7685d724cbec52dd9e (tree)
parent 860d88037a0ede87bc192786a8b5f5cce715a529
Author: Michael Dusan <michael.dusan@gmail.com>
Date:   Sat, 11 Jan 2020 16:45:57 -0500

strip cwd from compile error paths

closes #43138

Diffstat:
Msrc/errmsg.cpp | 25+++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/errmsg.cpp b/src/errmsg.cpp @@ -21,11 +21,32 @@ static void print_err_msg_type(ErrorMsg *err, ErrColor color, ErrType err_type) // Show the error location, if available if (err->path != nullptr) { + const char *path = buf_ptr(err->path); + Slice<const char> pathslice{path, strlen(path)}; + + // Cache cwd + static Buf *cwdbuf{nullptr}; + static Slice<const char> cwd; + + if (cwdbuf == nullptr) { + cwdbuf = buf_alloc(); + Error err = os_get_cwd(cwdbuf); + if (err != ErrorNone) + zig_panic("get cwd failed"); + buf_append_char(cwdbuf, ZIG_OS_SEP_CHAR); + cwd.ptr = buf_ptr(cwdbuf); + cwd.len = strlen(cwd.ptr); + } + const size_t line = err->line_start + 1; const size_t col = err->column_start + 1; - if (use_colors) os_stderr_set_color(TermColorBold); - fprintf(stderr, "%s:%" ZIG_PRI_usize ":%" ZIG_PRI_usize ": ", buf_ptr(err->path), line, col); + + // Strip cwd from path + if (memStartsWith(pathslice, cwd)) + fprintf(stderr, ".%c%s:%" ZIG_PRI_usize ":%" ZIG_PRI_usize ": ", ZIG_OS_SEP_CHAR, path+cwd.len, line, col); + else + fprintf(stderr, "%s:%" ZIG_PRI_usize ":%" ZIG_PRI_usize ": ", path, line, col); } // Write out the error type