partition.Volume gains a FilesystemKind signature (today .fat for every probed volume; S4 adds a real VBR recognizer for exFAT) — the seam filesystems.csv keys on to choose a service binary. New filesystem-map.zig parses `/system/configuration/filesystems.csv` (signature, binary) into rules and match()es a signature to its binary, mirroring the device registry: a signature no row matches goes unserved, never guessed; slices point into the source buffer. Three host tests (fat->binary, the binary is data-driven not hardcoded, malformed rows counted); the test rule buffer is a named fixture size so the bounds gate stays quiet. The VM's build gains the csv dependency and wires the filesystem-map test into its package test step. Not yet consumed by the binary — that lands when the VM loads the tables (step 4).
19 lines
851 B
Zig
19 lines
851 B
Zig
.{
|
|
.name = .volume_manager,
|
|
.version = "0.0.0",
|
|
.fingerprint = 0x911b01e1eaeabcf5, // Changing this has security and trust implications.
|
|
.minimum_zig_version = "0.16.0",
|
|
.dependencies = .{
|
|
// build-support supplies the shared recipe; kernel is implicit in every
|
|
// binary. device (block, driver) and protocol (device-manager-protocol,
|
|
// envelope) are the homes of this service's remaining imports.
|
|
.@"build-support" = .{ .path = "../../../build-support" },
|
|
.kernel = .{ .path = "../../../library/kernel" },
|
|
.device = .{ .path = "../../../library/device" },
|
|
.protocol = .{ .path = "../../../library/protocol" },
|
|
// csv parses filesystems.csv / volumes.csv, the mount-map configuration.
|
|
.csv = .{ .path = "../../../library/csv" },
|
|
},
|
|
.paths = .{""},
|
|
}
|