diff --git a/src/test_main.zig b/src/test_main.zig index a7ba2c4..0eb0a4c 100644 --- a/src/test_main.zig +++ b/src/test_main.zig @@ -2,4 +2,5 @@ test "turbonss test suite" { _ = @import("main.zig"); _ = @import("shell.zig"); _ = @import("header.zig"); + _ = @import("user.zig"); } diff --git a/src/user.zig b/src/user.zig new file mode 100644 index 0000000..cc95ea5 --- /dev/null +++ b/src/user.zig @@ -0,0 +1,20 @@ +const std = @import("std"); + +const PackedUserSize = @sizeOf(PackedUser); +const PackedUser = packed struct { + uid: u32, + gid: u32, + additional_gids_offset: u29, + shell_here: u1, + shell_len_or_place: u6, + homedir_len: u6, + username_is_a_suffix: u1, + username_offset_or_len: u5, + gecos_len: u8, +}; + +const testing = std.testing; + +test "PackedUser is byte-aligned" { + //try testing.expectEqual(PackedUserSize * 8, @bitSizeOf(PackedUser)); +} diff --git a/src/usergroups.zig b/src/usergroups.zig index 2cf9008..4e11855 100644 --- a/src/usergroups.zig +++ b/src/usergroups.zig @@ -1,34 +1,7 @@ const std = @import("std"); -const DB = struct { - users: std.StringHashMap(User), - groups: std.StringHashMap(Group), -}; - const Group = struct { gid: u32, name: []const u8, members: std.BufSet, }; - -const User = struct { - uid: u32, - gid: u32, - name: []const u8, - gecos: []const u8, - home: []const u8, - shell: []const u8, - groups: std.BufSet, -}; - -const PackedUser = packed struct { - uid: u32, - gid: u32, - additional_gids_offset: u29, - shell_here: u1, - shell_len_or_place: u6, - homedir_len: u6, - username_is_a_suffix: u1, - username_offset_or_len: u5, - gecos_len: u8, -};