diff --git a/src/DB.zig b/src/DB.zig index 50c8473..eb7606d 100644 --- a/src/DB.zig +++ b/src/DB.zig @@ -295,9 +295,9 @@ pub fn packCGroupNoMembers(group: *const PackedGroup, buf: []u8) error{BufferToo buf[name_start + name.len] = 0; return CGroup{ - .gid = group.gid(), - .name = buf[name_start .. name_start + name.len :0].ptr, - .members = member_ptrs.ptr, + .gr_name = buf[name_start .. name_start + name.len :0].ptr, + .gr_gid = group.gid(), + .gr_mem = member_ptrs.ptr, }; } @@ -364,9 +364,9 @@ pub fn packCGroup(self: *const DB, group: *const PackedGroup, buf: []u8) error{B buf[buf_offset + name.len] = 0; return CGroup{ - .gid = group.gid(), - .name = buf[buf_offset .. buf_offset + name.len :0].ptr, - .members = member_ptrs.ptr, + .gr_name = buf[buf_offset .. buf_offset + name.len :0].ptr, + .gr_gid = group.gid(), + .gr_mem = member_ptrs.ptr, }; } @@ -799,9 +799,9 @@ test "DB getgrnam/getgrgid" { { try testing.expectEqual(try db.getgrnam("doesnotexist", buf, false), null); const all = (try db.getgrnam("all", buf, false)).?; - try testing.expectEqual(all.gid, 9999); - try testing.expectEqualStrings(all.name[0..4], "all\x00"); - const members = all.members; + try testing.expectEqual(all.gr_gid, 9999); + try testing.expectEqualStrings(all.gr_name[0..4], "all\x00"); + const members = all.gr_mem; try testing.expectEqualStrings(mem.sliceTo(members[0].?, 0), "Name" ** 8); try testing.expectEqualStrings(mem.sliceTo(members[1].?, 0), "root"); try testing.expectEqualStrings(mem.sliceTo(members[2].?, 0), "svc-bar"); @@ -811,16 +811,16 @@ test "DB getgrnam/getgrgid" { { const all = (try db.getgrnam("all", buf, true)).?; - try testing.expectEqual(all.gid, 9999); - try testing.expectEqualStrings(all.name[0..4], "all\x00"); - try testing.expectEqual(all.members[0], null); + try testing.expectEqual(all.gr_gid, 9999); + try testing.expectEqualStrings(all.gr_name[0..4], "all\x00"); + try testing.expectEqual(all.gr_mem[0], null); } { try testing.expectEqual(try db.getgrgid(42, buf, false), null); const all = (try db.getgrgid(9999, buf, false)).?; - try testing.expectEqual(all.gid, 9999); - try testing.expectEqualStrings(all.name[0..3], "all"); + try testing.expectEqual(all.gr_gid, 9999); + try testing.expectEqualStrings(all.gr_name[0..3], "all"); } try testing.expectEqualStrings("", errc.unwrap().constSlice()); diff --git a/src/Group.zig b/src/Group.zig index 845fde9..739e541 100644 --- a/src/Group.zig +++ b/src/Group.zig @@ -126,15 +126,16 @@ pub fn strlenZ(self: *const Group) usize { } pub const CGroup = extern struct { - gid: u32, - name: [*:0]const u8, + gr_name: [*:0]const u8, + gr_passwd: [*:0]const u8 = "x", + gr_gid: u32, // Should be [*:null]align(1) const ?[*:0]const u8 // https://github.com/ziglang/zig/issues/7517 - members: [*]align(1) const ?[*:0]const u8, + gr_mem: [*]align(1) const ?[*:0]const u8, }; // size of the pointer to a single member. -pub const ptr_size = @sizeOf(meta.Child(meta.fieldInfo(CGroup, .members).field_type)); +pub const ptr_size = @sizeOf(meta.Child(meta.fieldInfo(CGroup, .gr_mem).field_type)); const testing = std.testing; diff --git a/src/libnss.zig b/src/libnss.zig index 3df6fc1..0139f02 100644 --- a/src/libnss.zig +++ b/src/libnss.zig @@ -94,7 +94,7 @@ fn init() void { //if (verbose) // std.debug.print("opening '{s}'\n", .{fname}); const fname = turbonss_db_path; - const verbose = true; + const verbose = false; const omit_members = true; const file = File.open(fname) catch |err| { @@ -617,9 +617,9 @@ test "libnss getgrgid_r and getgrnam_r" { } fn testSvcGroup(g: CGroup) !void { - try testing.expectEqual(@as(u32, 100000), g.gid); - try testing.expectEqualStrings("service-group", mem.sliceTo(g.name, 0)); - const members = g.members; + try testing.expectEqual(@as(u32, 100000), g.gr_gid); + try testing.expectEqualStrings("service-group", mem.sliceTo(g.gr_name, 0)); + const members = g.gr_mem; try testing.expect(members[0] != null); try testing.expect(members[1] != null); try testing.expectEqualStrings("root", mem.sliceTo(members[0].?, 0));