CGroup is extern struct

This commit is contained in:
Motiejus Jakštys 2022-04-19 10:42:24 +03:00 committed by Motiejus Jakštys
parent 70120051c8
commit be9bf3f51c
2 changed files with 7 additions and 37 deletions

View File

@ -548,35 +548,6 @@ test "read/write via iovec" {
var db = try DB.fromCorpus(allocator, &corpus); var db = try DB.fromCorpus(allocator, &corpus);
defer db.deinit(allocator); defer db.deinit(allocator);
// TODO: replace with an integration test when high-level
// reader API is present
//const blob = sections.groupmembers.blob;
//var i: usize = 0;
//while (i < corpus.groups.len) : (i += 1) {
//const offset = sections.groupmembers.idx2offset[i];
//var vit = try compress.VarintSliceIterator(blob[offset..]);
//var it = compress.DeltaDecompressionIterator(&vit);
//for (corpus.group2users[i]) |user_idx| {
// const got_user_offset = (try it.next()).?;
// const want_user_offset = sections.users.idx2offset[user_idx];
// try testing.expectEqual(got_user_offset, want_user_offset);
//}
//try testing.expectEqual(it.next(), null);
//}
//var it = PackedUser.iterator(sections.users.blob, sections.shell_reader);
//i = 0;
//while (i < corpus.users.len) : (i += 1) {
// const got = (try it.next()).?;
// const user = corpus.users.get(i);
// try testing.expectEqual(user.uid, got.uid());
// try testing.expectEqual(user.gid, got.gid());
// try testing.expectEqualStrings(user.name, got.name());
// try testing.expectEqualStrings(user.gecos, got.gecos());
// try testing.expectEqualStrings(user.home, got.home());
// try testing.expectEqualStrings(user.shell, got.shell(sections.shell_reader));
//}
const fd = try os.memfd_create("test_turbonss_db", 0); const fd = try os.memfd_create("test_turbonss_db", 0);
defer os.close(fd); defer os.close(fd);
@ -594,7 +565,7 @@ test "read/write via iovec" {
try testing.expectEqualSlices(u32, db.idx_uid2user, db2.idx_uid2user[0..num_users]); try testing.expectEqualSlices(u32, db.idx_uid2user, db2.idx_uid2user[0..num_users]);
} }
test "high-level API" { test "getgrnam/getgrgid" {
var corpus = try Corpus.testCorpus(testing.allocator); var corpus = try Corpus.testCorpus(testing.allocator);
defer corpus.deinit(); defer corpus.deinit();
var db = try DB.fromCorpus(testing.allocator, &corpus); var db = try DB.fromCorpus(testing.allocator, &corpus);
@ -627,12 +598,11 @@ test "high-level API" {
} }
test "getgr_bufsize" { test "getgr_bufsize" {
var corpus = try Corpus.testCorpus(testing.allocator); var arena = ArenaAllocator.init(testing.allocator);
defer corpus.deinit(); defer arena.deinit();
var db = try DB.fromCorpus(testing.allocator, &corpus); var corpus = try Corpus.testCorpus(arena.allocator());
defer db.deinit(testing.allocator); var db = try DB.fromCorpus(arena.allocator(), &corpus);
var buf = try testing.allocator.alloc(u8, db.header.getgr_bufsize); var buf = try arena.allocator().alloc(u8, db.header.getgr_bufsize);
defer testing.allocator.free(buf);
_ = try db.getgrnam("all", &buf); _ = try db.getgrnam("all", &buf);
buf.len -= 1; buf.len -= 1;

View File

@ -3,7 +3,7 @@ const meta = @import("std").meta;
// Name type should be 0-terminated, members should be null-terminated, but // Name type should be 0-terminated, members should be null-terminated, but
// sentinel is not part of the type (but is always there). Adding sentinel // sentinel is not part of the type (but is always there). Adding sentinel
// crashes zig compiler in pre-0.10. https://github.com/ziglang/zig/issues/7517 // crashes zig compiler in pre-0.10. https://github.com/ziglang/zig/issues/7517
pub const CGroup = struct { pub const CGroup = extern struct {
gid: u32, gid: u32,
// should be [*:0]const u8 // should be [*:0]const u8
name: [*]const u8, name: [*]const u8,