Files
zig-squashfs/inode_types/sym.zig
T
2025-05-12 13:46:46 -05:00

38 lines
1.1 KiB
Zig

const std = @import("std");
const io = std.io;
pub const SymlinkInode = struct {
hard_links: u32,
target_size: u32,
path: []const u8,
};
pub fn readSymlinkInode(rdr: io.AnyReader) !SymlinkInode {
const out = SymlinkInode{
.hard_links = try rdr.readInt(u32, std.builtin.Endian.little),
.target_size = try rdr.readInt(u32, std.builtin.Endian.little),
.path = undefined,
};
out.path = (try rdr.readBoundedBytes(out.target_size + 1)).constSlice();
return out;
}
pub const ExtSymlinkInode = struct {
hard_links: u32,
target_size: u32,
path: []const u8,
xattr_index: u32,
};
pub fn readExtSymlinkInode(rdr: io.AnyReader) !SymlinkInode {
const out = ExtSymlinkInode{
.hard_links = try rdr.readInt(u32, std.builtin.Endian.little),
.target_size = try rdr.readInt(u32, std.builtin.Endian.little),
.path = undefined,
.xattr_index = undefined,
};
out.path = (try rdr.readBoundedBytes(out.target_size + 1)).constSlice();
out.xattr_index = try rdr.readInt(u32, std.builtin.Endian.little);
return out;
}