mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-07 06:14:33 +00:00
tar: use file word in less places
This commit is contained in:
parent
4a6d67ab1a
commit
c76abe0e18
1 changed files with 26 additions and 26 deletions
|
|
@ -58,7 +58,7 @@ pub const Options = struct {
|
|||
},
|
||||
unsupported_file_type: struct {
|
||||
file_name: []const u8,
|
||||
file_type: Header.FileType,
|
||||
file_type: Header.Kind,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -90,7 +90,7 @@ pub const Header = struct {
|
|||
|
||||
bytes: *const [SIZE]u8,
|
||||
|
||||
pub const FileType = enum(u8) {
|
||||
pub const Kind = enum(u8) {
|
||||
normal_alias = 0,
|
||||
normal = '0',
|
||||
hard_link = '1',
|
||||
|
|
@ -142,7 +142,7 @@ pub const Header = struct {
|
|||
return @intCast(try header.numeric(100, 8));
|
||||
}
|
||||
|
||||
pub fn fileSize(header: Header) !u64 {
|
||||
pub fn size(header: Header) !u64 {
|
||||
return header.numeric(124, 12);
|
||||
}
|
||||
|
||||
|
|
@ -159,8 +159,8 @@ pub const Header = struct {
|
|||
return header.str(345, 155);
|
||||
}
|
||||
|
||||
pub fn fileType(header: Header) FileType {
|
||||
const result: FileType = @enumFromInt(header.bytes[156]);
|
||||
pub fn kind(header: Header) Kind {
|
||||
const result: Kind = @enumFromInt(header.bytes[156]);
|
||||
if (result == .normal_alias) return .normal;
|
||||
return result;
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@ pub fn pipeToFileSystem(dir: std.fs.Dir, reader: anytype, options: Options) !voi
|
|||
var iter = tarReader(reader, options.diagnostics);
|
||||
|
||||
while (try iter.next()) |file| {
|
||||
switch (file.file_type) {
|
||||
switch (file.kind) {
|
||||
.directory => {
|
||||
const file_name = try stripComponents(file.name, options.strip_components);
|
||||
if (file_name.len != 0 and !options.exclude_empty_directories) {
|
||||
|
|
@ -339,7 +339,7 @@ test "tar run Go test cases" {
|
|||
size: usize = 0,
|
||||
mode: u32 = 0,
|
||||
link_name: []const u8 = &[0]u8{},
|
||||
file_type: Header.FileType = .normal,
|
||||
kind: Header.Kind = .normal,
|
||||
truncated: bool = false, // when there is no file body, just header, usefull for huge files
|
||||
};
|
||||
|
||||
|
|
@ -376,7 +376,7 @@ test "tar run Go test cases" {
|
|||
},
|
||||
.{
|
||||
.path = "sparse-formats.tar",
|
||||
.err = error.TarUnsupportedFileType,
|
||||
.err = error.TarUnsupportedHeader,
|
||||
},
|
||||
.{
|
||||
.path = "star.tar",
|
||||
|
|
@ -427,7 +427,7 @@ test "tar run Go test cases" {
|
|||
.{
|
||||
.name = "a/b",
|
||||
.size = 0,
|
||||
.file_type = .symbolic_link,
|
||||
.kind = .symbolic_link,
|
||||
.mode = 0o777,
|
||||
.link_name = "123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100",
|
||||
},
|
||||
|
|
@ -448,7 +448,7 @@ test "tar run Go test cases" {
|
|||
.{
|
||||
.name = "foo",
|
||||
.size = 999,
|
||||
.file_type = .normal,
|
||||
.kind = .normal,
|
||||
.mode = 0o640,
|
||||
},
|
||||
},
|
||||
|
|
@ -489,7 +489,7 @@ test "tar run Go test cases" {
|
|||
.{
|
||||
.name = "P1050238.JPG.log",
|
||||
.size = 14,
|
||||
.file_type = .normal,
|
||||
.kind = .normal,
|
||||
.mode = 0o664,
|
||||
},
|
||||
},
|
||||
|
|
@ -504,13 +504,13 @@ test "tar run Go test cases" {
|
|||
.{
|
||||
.name = "small.txt",
|
||||
.size = 5,
|
||||
.file_type = .normal,
|
||||
.kind = .normal,
|
||||
.mode = 0o644,
|
||||
},
|
||||
.{
|
||||
.name = "small2.txt",
|
||||
.size = 11,
|
||||
.file_type = .normal,
|
||||
.kind = .normal,
|
||||
.mode = 0o644,
|
||||
},
|
||||
},
|
||||
|
|
@ -525,14 +525,14 @@ test "tar run Go test cases" {
|
|||
.{
|
||||
.name = "GNU2/GNU2/long-path-name",
|
||||
.link_name = "GNU4/GNU4/long-linkpath-name",
|
||||
.file_type = .symbolic_link,
|
||||
.kind = .symbolic_link,
|
||||
},
|
||||
},
|
||||
},
|
||||
.{
|
||||
// has gnu type D (directory) and S (sparse) blocks
|
||||
.path = "gnu-incremental.tar",
|
||||
.err = error.TarUnsupportedFileType,
|
||||
.err = error.TarUnsupportedHeader,
|
||||
},
|
||||
.{
|
||||
// should use values only from last pax header
|
||||
|
|
@ -541,7 +541,7 @@ test "tar run Go test cases" {
|
|||
.{
|
||||
.name = "bar",
|
||||
.link_name = "PAX4/PAX4/long-linkpath-name",
|
||||
.file_type = .symbolic_link,
|
||||
.kind = .symbolic_link,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -620,7 +620,7 @@ test "tar run Go test cases" {
|
|||
.files = &[_]Case.File{
|
||||
.{
|
||||
.name = "123456789/" ** 30,
|
||||
.file_type = .directory,
|
||||
.kind = .directory,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -668,7 +668,7 @@ test "tar run Go test cases" {
|
|||
const expected = case.files[i];
|
||||
try std.testing.expectEqualStrings(expected.name, actual.name);
|
||||
try std.testing.expectEqual(expected.size, actual.size);
|
||||
try std.testing.expectEqual(expected.file_type, actual.file_type);
|
||||
try std.testing.expectEqual(expected.kind, actual.kind);
|
||||
try std.testing.expectEqual(expected.mode, actual.mode);
|
||||
try std.testing.expectEqualStrings(expected.link_name, actual.link_name);
|
||||
|
||||
|
|
@ -955,7 +955,7 @@ fn TarReader(comptime ReaderType: type) type {
|
|||
link_name: []const u8, // target name of symlink
|
||||
size: usize, // size of the file in bytes
|
||||
mode: u32,
|
||||
file_type: Header.FileType,
|
||||
kind: Header.Kind,
|
||||
|
||||
reader: ReaderType,
|
||||
|
||||
|
|
@ -1004,7 +1004,7 @@ fn TarReader(comptime ReaderType: type) type {
|
|||
.name = self.file_name_buffer[0..0],
|
||||
.link_name = self.link_name_buffer[0..0],
|
||||
.size = 0,
|
||||
.file_type = .normal,
|
||||
.kind = .normal,
|
||||
.mode = 0,
|
||||
.reader = self.reader,
|
||||
};
|
||||
|
|
@ -1026,14 +1026,14 @@ fn TarReader(comptime ReaderType: type) type {
|
|||
self.initFile();
|
||||
|
||||
while (try self.readHeader()) |header| {
|
||||
const file_type = header.fileType();
|
||||
const size: usize = @intCast(try header.fileSize());
|
||||
const kind = header.kind();
|
||||
const size: usize = @intCast(try header.size());
|
||||
self.padding = blockPadding(size);
|
||||
|
||||
switch (file_type) {
|
||||
switch (kind) {
|
||||
// File types to retrun upstream
|
||||
.directory, .normal, .symbolic_link => {
|
||||
self.file.file_type = file_type;
|
||||
self.file.kind = kind;
|
||||
self.file.mode = try header.mode();
|
||||
|
||||
// set file attributes if not already set by prefix/extended headers
|
||||
|
|
@ -1083,10 +1083,10 @@ fn TarReader(comptime ReaderType: type) type {
|
|||
},
|
||||
// All other are unsupported header types
|
||||
else => {
|
||||
const d = self.diagnostics orelse return error.TarUnsupportedFileType;
|
||||
const d = self.diagnostics orelse return error.TarUnsupportedHeader;
|
||||
try d.errors.append(d.allocator, .{ .unsupported_file_type = .{
|
||||
.file_name = try d.allocator.dupe(u8, header.name()),
|
||||
.file_type = file_type,
|
||||
.file_type = kind,
|
||||
} });
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue