1
Fork 0

better comptime

main
Motiejus Jakštys 2022-07-06 13:29:36 +03:00
parent efdc919195
commit 9bd922a55a
2 changed files with 8 additions and 5 deletions

View File

@ -248,9 +248,12 @@ pub fn fieldOffsets(lengths: DBNumbers) DBNumbers {
var result: DBNumbers = undefined; var result: DBNumbers = undefined;
result.header = 0; result.header = 0;
var offset = comptime nblocks_n(u64, @sizeOf(Header)); var offset = comptime nblocks_n(u64, @sizeOf(Header));
comptime assert(mem.eql(u8, DB_fields[0].name, "header")); inline for (DB_fields[0..]) |field, i| {
inline for (DB_fields[1..]) |field, i| { comptime {
comptime assert(mem.eql(u8, field.name, meta.fields(DBNumbers)[i + 1].name)); assert(mem.eql(u8, field.name, meta.fields(DBNumbers)[i].name));
if (mem.eql(u8, field.name, "header")) continue;
}
@field(result, field.name) = offset; @field(result, field.name) = offset;
offset += @field(lengths, field.name); offset += @field(lengths, field.name);
} }

View File

@ -37,7 +37,7 @@ const State = struct {
// global_state is initialized on first call to an nss function // global_state is initialized on first call to an nss function
var global_state: State = undefined; var global_state: State = undefined;
var global_start = once(init); var global_init = once(init);
// assigns State from environment variables et al // assigns State from environment variables et al
fn init() void { fn init() void {
@ -80,7 +80,7 @@ export fn _nss_turbo_getpwuid_r(
len: usize, len: usize,
errnop: *c_int, errnop: *c_int,
) c.enum_nss_status { ) c.enum_nss_status {
global_start.call(); global_init.call();
if (global_state.file == null) { if (global_state.file == null) {
errnop.* = @enumToInt(os.E.AGAIN); errnop.* = @enumToInt(os.E.AGAIN);