store members_offset as a varint

This commit is contained in:
2022-03-09 07:04:33 +02:00
committed by Motiejus Jakštys
parent ba56ff8d3b
commit 4cc655de24
4 changed files with 57 additions and 47 deletions

View File

@@ -187,11 +187,9 @@ the beginning of the section.
```
const PackedGroup = packed struct {
gid: u32,
// index to a separate structure with a list of members.
members_offset: u32,
groupname_len: u8, // max is 32, but have too much space here.
// a groupname_len-sized string
groupname []u8;
// varint members_offset + (groupname_len-1)-length string
groupdata []u8;
}
pub const PackedUser = packed struct {
@@ -206,11 +204,11 @@ pub const PackedUser = packed struct {
gecos_len: u11,
// pseudocode: variable-sized array that will be stored immediately after
// this struct.
stringdata []u8;
userdata []u8;
}
```
`stringdata` contains a few string entries:
`userdata` contains a few entries:
- home.
- name (optional).
- gecos.
@@ -368,8 +366,8 @@ shellIndex len(shells)*2 shell index array
shellBlob <= 4032 shell data blob (max 63*64 bytes)
groups ? packed Group entries (8b padding)
users ? packed User entries (8b padding)
groupMembers ? per-group varint memberlist (no padding)
userGids ? per-user varint gidlist (no padding)
groupMembers ? per-group delta varint memberlist (no padding)
userGids ? per-user delta varint gidlist (no padding)
```
Section creation order: