From f30510f122f1a6c87bdde04d25d71c5ce38c9a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Tue, 28 Jun 2022 16:44:44 +0300 Subject: [PATCH] wrap errors in real code with quotes --- src/ErrCtx.zig | 7 +++++-- src/unix2db/main.zig | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/ErrCtx.zig b/src/ErrCtx.zig index 3325e5a..8cf17bf 100644 --- a/src/ErrCtx.zig +++ b/src/ErrCtx.zig @@ -31,6 +31,9 @@ pub fn write(self: *ErrCtx, bytes: []const u8) error{}!usize { const Writer = std.io.Writer(*ErrCtx, error{}, write); +// writer is private, because fmt.print(...) can do multiple write(...) calls +// for a single fmt.print(...). It is too easy to mis-use; therefore use the +// wrappers below. fn writer(self: *ErrCtx) Writer { return Writer{ .context = self }; } @@ -51,7 +54,7 @@ pub fn returnf( args: anytype, comptime ret: anytype, ) @TypeOf(ret) { - self.writer().print(format, args) catch unreachable; + self.print(format, args); return ret; } @@ -61,7 +64,7 @@ pub fn wrap(self: *ErrCtx, comptime msg: []const u8) *ErrCtx { } pub fn wrapf(self: *ErrCtx, comptime format: []const u8, args: anytype) *ErrCtx { - self.writer().print(format, args) catch unreachable; + self.print(format, args); return self; } diff --git a/src/unix2db/main.zig b/src/unix2db/main.zig index 72c6622..4d64452 100644 --- a/src/unix2db/main.zig +++ b/src/unix2db/main.zig @@ -70,11 +70,11 @@ fn execute( // https://github.com/ziglang/zig/issues/2473 var errc = ErrCtx{}; var passwdFile = fs.cwd().openFile(passwdFname, .{ .mode = .read_only }) catch |err| - return fail(errc.wrapf("open {s}", .{passwdFname}), stderr, err); + return fail(errc.wrapf("open '{s}'", .{passwdFname}), stderr, err); defer passwdFile.close(); var groupFile = fs.cwd().openFile(groupFname, .{ .mode = .read_only }) catch |err| - return fail(errc.wrapf("open {s}", .{groupFname}), stderr, err); + return fail(errc.wrapf("open '{s}'", .{groupFname}), stderr, err); defer groupFile.close(); var users = User.fromReader(allocator, &errc, passwdFile.reader()) catch |err| @@ -151,7 +151,7 @@ test "trivial error: missing passwd file" { const exit_code = execute(allocator, stdout.writer(), stderr.writer(), args[0..]); try testing.expectEqual(@as(u8, 1), exit_code); - try testing.expectEqualStrings(stderr.items, "ERROR FileNotFound: ./passwd: open \n"); + try testing.expectEqualStrings(stderr.items, "ERROR FileNotFound: open './passwd'\n"); } test "fail" {