// Port of cmd/wcc/err.c. Plan 9 style: short, no levels beyond // fatal/error/warn. Output goes through os.write so we don't pull in // libc stdio. package wcc; import os; import fmt; type pos = struct { file: str, line: i32, col: i32, }; let nerrors: i32 = 0; let nwarnings: i32 = 0; export fn fatal(msg: str) void = { fmt.errorln(msg); os.exit(1); }; export fn errorf(p: pos, msg: str) void = { os.write(2, p.file.ptr, p.file.len: u64); os.write(2, ": error: ".ptr, 9u64); os.write(2, msg.ptr, msg.len: u64); os.write(2, "\n".ptr, 1u64); nerrors += 1; }; export fn warnf(p: pos, msg: str) void = { os.write(2, p.file.ptr, p.file.len: u64); os.write(2, ": warning: ".ptr, 11u64); os.write(2, msg.ptr, msg.len: u64); os.write(2, "\n".ptr, 1u64); nwarnings += 1; };