mirror of
https://github.com/pygos/pkg-utils.git
synced 2024-11-21 20:39:46 +01:00
Shrink table of contents header
We aren't gonna need 2^32 uids/gids, this is a package manager, not a file system. Also, mode only uses 16 of 32 bits. We can shrink the entire header to 8 bytes. Signed-off-by: David Oberhollenzer <goliath@infraroot.at>
This commit is contained in:
parent
f95f02f6be
commit
ab753a402f
2 changed files with 5 additions and 12 deletions
|
@ -105,14 +105,10 @@ table of contents contains an entry with the following common structure:
|
||||||
|
|
||||||
0 1 2 3
|
0 1 2 3
|
||||||
+-------+-------+-------+-------+
|
+-------+-------+-------+-------+
|
||||||
0 | mode |
|
0 | mode | user id |
|
||||||
+-------+-------+-------+-------+
|
+-------+-------+-------+-------+
|
||||||
1 | user id |
|
1 | group id | path length |
|
||||||
+-------+-------+-------+-------+
|
+-------+-------+-------+-------+
|
||||||
2 | group id |
|
|
||||||
+-------+-------+-------+-------+
|
|
||||||
3 | path length |
|
|
||||||
+---------------+
|
|
||||||
|
|
||||||
The mode field contains standard UNIX permissions. The user ID and group ID
|
The mode field contains standard UNIX permissions. The user ID and group ID
|
||||||
fields contain the numeric IDs of the user and group respectively that own
|
fields contain the numeric IDs of the user and group respectively that own
|
||||||
|
@ -142,8 +138,6 @@ On the bit level, the mode field is structured as follows:
|
||||||
| +------------------------- set UID bit
|
| +------------------------- set UID bit
|
||||||
+----------------------------- file type
|
+----------------------------- file type
|
||||||
|
|
||||||
The upper 16 bit of the mode filed must be set to zero.
|
|
||||||
|
|
||||||
Currently, the following file types are supported:
|
Currently, the following file types are supported:
|
||||||
|
|
||||||
* `S_IFCHR` with a value of 2. The entry defines a character device.
|
* `S_IFCHR` with a value of 2. The entry defines a character device.
|
||||||
|
|
|
@ -36,10 +36,9 @@ typedef struct {
|
||||||
} record_t;
|
} record_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t mode;
|
uint16_t mode;
|
||||||
uint32_t uid;
|
uint16_t uid;
|
||||||
uint32_t gid;
|
uint16_t gid;
|
||||||
|
|
||||||
uint16_t path_length;
|
uint16_t path_length;
|
||||||
/* uint8_t path[]; */
|
/* uint8_t path[]; */
|
||||||
} toc_entry_t;
|
} toc_entry_t;
|
||||||
|
|
Loading…
Reference in a new issue