From c294d149fc0796bc19b2a87379c2c900bad0e12f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Sat, 2 Jul 2022 21:19:07 +0300 Subject: [PATCH] fix unix2db --- src/Group.zig | 6 ++++-- src/unix2db/main.zig | 16 +++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/Group.zig b/src/Group.zig index dfe15d4..ee83ead 100644 --- a/src/Group.zig +++ b/src/Group.zig @@ -72,7 +72,8 @@ pub fn fromReader(allocator: Allocator, reader: anytype) FromReaderError![]Group var line = ArrayList(u8).init(allocator); defer line.deinit(); - while (true) { + var i: usize = 0; + while (true) : (i += 1) { // TODO: catch and interpret different errors const max = std.math.maxInt(u32); reader.readUntilDelimiterArrayList(&line, '\n', max) catch |err| switch (err) { @@ -94,7 +95,8 @@ pub fn fromReader(allocator: Allocator, reader: anytype) FromReaderError![]Group while (members_it.next()) |member| try member_ptrs.append(member); - try groups.append(try init(allocator, gid, name, member_ptrs.items)); + const group = try init(allocator, gid, name, member_ptrs.items); + try groups.append(group); member_ptrs.shrinkRetainingCapacity(0); } diff --git a/src/unix2db/main.zig b/src/unix2db/main.zig index 762e43b..cff7ebf 100644 --- a/src/unix2db/main.zig +++ b/src/unix2db/main.zig @@ -79,13 +79,17 @@ fn execute( var users = User.fromReader(allocator, &errc, passwdFile.reader()) catch |err| return fail(errc.wrap("read users"), stderr, err); - defer for (users) |*user| user.deinit(allocator); - defer allocator.free(users); + defer { + for (users) |*user| user.deinit(allocator); + allocator.free(users); + } var groups = Group.fromReader(allocator, groupFile.reader()) catch |err| return fail(errc.wrap("read groups"), stderr, err); - defer for (groups) |*group| group.deinit(allocator); - defer allocator.free(groups); + defer { + for (groups) |*group| group.deinit(allocator); + allocator.free(groups); + } var corpus = Corpus.init(allocator, users, groups) catch |err| return fail(errc.wrap("init corpus"), stderr, err); @@ -203,7 +207,6 @@ test "smoke test" { while (i < corpus.users.len) : (i += 1) { const user = corpus.users.get(i); const line = user.toLine().constSlice(); - std.debug.print("({d}){s}", .{ line.len, line }); _ = try os.write(passwd_fd, line); } os.close(passwd_fd); @@ -221,7 +224,6 @@ test "smoke test" { }; const exit_code = execute(allocator, stdout.writer(), stderr.writer(), args); - //if (true) return error.SkipZigTest; - try testing.expectEqualStrings("", stderr.items); + try testing.expectEqualStrings("total 1664 bytes. groups=5 users=4\n", stderr.items); try testing.expectEqual(@as(u8, 0), exit_code); }