Started work on File

This commit is contained in:
Caleb Gardner
2025-05-14 06:59:56 -05:00
parent b0c71c59f8
commit 6dd3054006
8 changed files with 91 additions and 72 deletions
+35 -35
View File
@@ -6,24 +6,24 @@ pub const FileInode = struct {
frag_block_offset: u32,
size: u32,
block_sizes: []const u32,
};
pub fn readFileInode(rdr: std.io.AnyReader, block_size: u32, alloc: std.mem.Allocator) !FileInode {
var out = FileInode{
.start = try rdr.readInt(u32, std.builtin.Endian.little),
.frag_index = try rdr.readInt(u32, std.builtin.Endian.little),
.frag_block_offset = try rdr.readInt(u32, std.builtin.Endian.little),
.size = try rdr.readInt(u32, std.builtin.Endian.little),
.block_sizes = undefined,
};
var block_num = out.size / block_size;
if (out.frag_index != 0xFFFFFFFF) {
block_num += 1;
pub fn init(rdr: std.io.AnyReader, block_size: u32, alloc: std.mem.Allocator) !FileInode {
var out = FileInode{
.start = try rdr.readInt(u32, std.builtin.Endian.little),
.frag_index = try rdr.readInt(u32, std.builtin.Endian.little),
.frag_block_offset = try rdr.readInt(u32, std.builtin.Endian.little),
.size = try rdr.readInt(u32, std.builtin.Endian.little),
.block_sizes = undefined,
};
var block_num = out.size / block_size;
if (out.frag_index != 0xFFFFFFFF) {
block_num += 1;
}
out.block_sizes = try alloc.alloc(u32, block_num);
_ = try rdr.readAll(std.mem.asBytes(&out.block_sizes));
return out;
}
out.block_sizes = try alloc.alloc(u32, block_num);
_ = try rdr.readAll(std.mem.asBytes(&out.block_sizes));
return out;
}
};
pub const ExtFileInode = struct {
start: u64,
@@ -34,24 +34,24 @@ pub const ExtFileInode = struct {
frag_block_offset: u32,
xattr_index: u32,
block_sizes: []const u32,
};
pub fn readExtFileInode(rdr: std.io.AnyReader, block_size: u32, alloc: std.mem.Allocator) !ExtFileInode {
var out = ExtFileInode{
.start = try rdr.readInt(u64, std.builtin.Endian.little),
.size = try rdr.readInt(u64, std.builtin.Endian.little),
.sparse = try rdr.readInt(u64, std.builtin.Endian.little),
.hard_links = try rdr.readInt(u32, std.builtin.Endian.little),
.frag_index = try rdr.readInt(u32, std.builtin.Endian.little),
.frag_block_offset = try rdr.readInt(u32, std.builtin.Endian.little),
.xattr_index = try rdr.readInt(u32, std.builtin.Endian.little),
.block_sizes = undefined,
};
var block_num = out.size / block_size;
if (out.frag_index != 0xFFFFFFFF and out.size % block_size != 0) {
block_num += 1;
pub fn init(rdr: std.io.AnyReader, block_size: u32, alloc: std.mem.Allocator) !ExtFileInode {
var out = ExtFileInode{
.start = try rdr.readInt(u64, std.builtin.Endian.little),
.size = try rdr.readInt(u64, std.builtin.Endian.little),
.sparse = try rdr.readInt(u64, std.builtin.Endian.little),
.hard_links = try rdr.readInt(u32, std.builtin.Endian.little),
.frag_index = try rdr.readInt(u32, std.builtin.Endian.little),
.frag_block_offset = try rdr.readInt(u32, std.builtin.Endian.little),
.xattr_index = try rdr.readInt(u32, std.builtin.Endian.little),
.block_sizes = undefined,
};
var block_num = out.size / block_size;
if (out.frag_index != 0xFFFFFFFF and out.size % block_size != 0) {
block_num += 1;
}
out.block_sizes = try alloc.alloc(u32, block_num);
_ = try rdr.readAll(std.mem.asBytes(&out.block_sizes));
return out;
}
out.block_sizes = try alloc.alloc(u32, block_num);
_ = try rdr.readAll(std.mem.asBytes(&out.block_sizes));
return out;
}
};