Started work on File
This commit is contained in:
+2
-4
@@ -53,13 +53,11 @@ pub const ExtDirInode = struct {
|
||||
.xattr_index = try rdr.readInt(u32, std.builtin.Endian.little),
|
||||
.indexes = undefined,
|
||||
};
|
||||
var tmp = std.ArrayList(DirIndex).init(alloc);
|
||||
try tmp.resize(out.dir_index_count);
|
||||
out.indexes = try alloc.alloc(DirIndex, out.dir_index_count);
|
||||
var i: u16 = 0;
|
||||
while (i < out.dir_index_count) : (i += 1) {
|
||||
tmp.items[i] = try .init(rdr, alloc);
|
||||
out.indexes[i] = try .init(rdr, alloc);
|
||||
}
|
||||
out.indexes = tmp.items;
|
||||
return out;
|
||||
}
|
||||
};
|
||||
|
||||
+35
-35
@@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
+24
-24
@@ -5,35 +5,35 @@ pub const SymlinkInode = struct {
|
||||
hard_links: u32,
|
||||
target_size: u32,
|
||||
path: []u8,
|
||||
};
|
||||
|
||||
pub fn readSymlinkInode(rdr: io.AnyReader, alloc: std.mem.Allocator) !SymlinkInode {
|
||||
var 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 alloc.alloc(u8, out.target_size + 1);
|
||||
_ = try rdr.readAll(out.path);
|
||||
return out;
|
||||
}
|
||||
pub fn init(rdr: io.AnyReader, alloc: std.mem.Allocator) !SymlinkInode {
|
||||
var 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 alloc.alloc(u8, out.target_size + 1);
|
||||
_ = try rdr.readAll(out.path);
|
||||
return out;
|
||||
}
|
||||
};
|
||||
|
||||
pub const ExtSymlinkInode = struct {
|
||||
hard_links: u32,
|
||||
target_size: u32,
|
||||
path: []u8,
|
||||
xattr_index: u32,
|
||||
};
|
||||
|
||||
pub fn readExtSymlinkInode(rdr: io.AnyReader, alloc: std.mem.Allocator) !ExtSymlinkInode {
|
||||
var 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 alloc.alloc(u8, out.target_size + 1);
|
||||
_ = try rdr.readAll(out.path);
|
||||
out.xattr_index = try rdr.readInt(u32, std.builtin.Endian.little);
|
||||
return out;
|
||||
}
|
||||
pub fn init(rdr: io.AnyReader, alloc: std.mem.Allocator) !ExtSymlinkInode {
|
||||
var 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 alloc.alloc(u8, out.target_size + 1);
|
||||
_ = try rdr.readAll(out.path);
|
||||
out.xattr_index = try rdr.readInt(u32, std.builtin.Endian.little);
|
||||
return out;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user