| ... | @@ -58,7 +58,7 @@ pub const Options = struct { | ... | @@ -58,7 +58,7 @@ pub const Options = struct { |
| 58 | }, | 58 | }, |
| 59 | unsupported_file_type: struct { | 59 | unsupported_file_type: struct { |
| 60 | file_name: []const u8, | 60 | file_name: []const u8, |
| 61 | file_type: Header.FileType, | 61 | file_type: Header.Kind, |
| 62 | }, | 62 | }, |
| 63 | }; | 63 | }; |
| 64 | | 64 | |
| ... | @@ -90,7 +90,7 @@ pub const Header = struct { | ... | @@ -90,7 +90,7 @@ pub const Header = struct { |
| 90 | | 90 | |
| 91 | bytes: *const [SIZE]u8, | 91 | bytes: *const [SIZE]u8, |
| 92 | | 92 | |
| 93 | pub const FileType = enum(u8) { | 93 | pub const Kind = enum(u8) { |
| 94 | normal_alias = 0, | 94 | normal_alias = 0, |
| 95 | normal = '0', | 95 | normal = '0', |
| 96 | hard_link = '1', | 96 | hard_link = '1', |
| ... | @@ -142,7 +142,7 @@ pub const Header = struct { | ... | @@ -142,7 +142,7 @@ pub const Header = struct { |
| 142 | return @intCast(try header.numeric(100, 8)); | 142 | return @intCast(try header.numeric(100, 8)); |
| 143 | } | 143 | } |
| 144 | | 144 | |
| 145 | pub fn fileSize(header: Header) !u64 { | 145 | pub fn size(header: Header) !u64 { |
| 146 | return header.numeric(124, 12); | 146 | return header.numeric(124, 12); |
| 147 | } | 147 | } |
| 148 | | 148 | |
| ... | @@ -159,8 +159,8 @@ pub const Header = struct { | ... | @@ -159,8 +159,8 @@ pub const Header = struct { |
| 159 | return header.str(345, 155); | 159 | return header.str(345, 155); |
| 160 | } | 160 | } |
| 161 | | 161 | |
| 162 | pub fn fileType(header: Header) FileType { | 162 | pub fn kind(header: Header) Kind { |
| 163 | const result: FileType = @enumFromInt(header.bytes[156]); | 163 | const result: Kind = @enumFromInt(header.bytes[156]); |
| 164 | if (result == .normal_alias) return .normal; | 164 | if (result == .normal_alias) return .normal; |
| 165 | return result; | 165 | return result; |
| 166 | } | 166 | } |
| ... | @@ -242,7 +242,7 @@ pub fn pipeToFileSystem(dir: std.fs.Dir, reader: anytype, options: Options) !voi | ... | @@ -242,7 +242,7 @@ pub fn pipeToFileSystem(dir: std.fs.Dir, reader: anytype, options: Options) !voi |
| 242 | var iter = tarReader(reader, options.diagnostics); | 242 | var iter = tarReader(reader, options.diagnostics); |
| 243 | | 243 | |
| 244 | while (try iter.next()) |file| { | 244 | while (try iter.next()) |file| { |
| 245 | switch (file.file_type) { | 245 | switch (file.kind) { |
| 246 | .directory => { | 246 | .directory => { |
| 247 | const file_name = try stripComponents(file.name, options.strip_components); | 247 | const file_name = try stripComponents(file.name, options.strip_components); |
| 248 | if (file_name.len != 0 and !options.exclude_empty_directories) { | 248 | if (file_name.len != 0 and !options.exclude_empty_directories) { |
| ... | @@ -339,7 +339,7 @@ test "tar run Go test cases" { | ... | @@ -339,7 +339,7 @@ test "tar run Go test cases" { |
| 339 | size: usize = 0, | 339 | size: usize = 0, |
| 340 | mode: u32 = 0, | 340 | mode: u32 = 0, |
| 341 | link_name: []const u8 = &[0]u8{}, | 341 | link_name: []const u8 = &[0]u8{}, |
| 342 | file_type: Header.FileType = .normal, | 342 | kind: Header.Kind = .normal, |
| 343 | truncated: bool = false, // when there is no file body, just header, usefull for huge files | 343 | truncated: bool = false, // when there is no file body, just header, usefull for huge files |
| 344 | }; | 344 | }; |
| 345 | | 345 | |
| ... | @@ -376,7 +376,7 @@ test "tar run Go test cases" { | ... | @@ -376,7 +376,7 @@ test "tar run Go test cases" { |
| 376 | }, | 376 | }, |
| 377 | .{ | 377 | .{ |
| 378 | .path = "sparse-formats.tar", | 378 | .path = "sparse-formats.tar", |
| 379 | .err = error.TarUnsupportedFileType, | 379 | .err = error.TarUnsupportedHeader, |
| 380 | }, | 380 | }, |
| 381 | .{ | 381 | .{ |
| 382 | .path = "star.tar", | 382 | .path = "star.tar", |
| ... | @@ -427,7 +427,7 @@ test "tar run Go test cases" { | ... | @@ -427,7 +427,7 @@ test "tar run Go test cases" { |
| 427 | .{ | 427 | .{ |
| 428 | .name = "a/b", | 428 | .name = "a/b", |
| 429 | .size = 0, | 429 | .size = 0, |
| 430 | .file_type = .symbolic_link, | 430 | .kind = .symbolic_link, |
| 431 | .mode = 0o777, | 431 | .mode = 0o777, |
| 432 | .link_name = "123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100", | 432 | .link_name = "123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100", |
| 433 | }, | 433 | }, |
| ... | @@ -448,7 +448,7 @@ test "tar run Go test cases" { | ... | @@ -448,7 +448,7 @@ test "tar run Go test cases" { |
| 448 | .{ | 448 | .{ |
| 449 | .name = "foo", | 449 | .name = "foo", |
| 450 | .size = 999, | 450 | .size = 999, |
| 451 | .file_type = .normal, | 451 | .kind = .normal, |
| 452 | .mode = 0o640, | 452 | .mode = 0o640, |
| 453 | }, | 453 | }, |
| 454 | }, | 454 | }, |
| ... | @@ -489,7 +489,7 @@ test "tar run Go test cases" { | ... | @@ -489,7 +489,7 @@ test "tar run Go test cases" { |
| 489 | .{ | 489 | .{ |
| 490 | .name = "P1050238.JPG.log", | 490 | .name = "P1050238.JPG.log", |
| 491 | .size = 14, | 491 | .size = 14, |
| 492 | .file_type = .normal, | 492 | .kind = .normal, |
| 493 | .mode = 0o664, | 493 | .mode = 0o664, |
| 494 | }, | 494 | }, |
| 495 | }, | 495 | }, |
| ... | @@ -504,13 +504,13 @@ test "tar run Go test cases" { | ... | @@ -504,13 +504,13 @@ test "tar run Go test cases" { |
| 504 | .{ | 504 | .{ |
| 505 | .name = "small.txt", | 505 | .name = "small.txt", |
| 506 | .size = 5, | 506 | .size = 5, |
| 507 | .file_type = .normal, | 507 | .kind = .normal, |
| 508 | .mode = 0o644, | 508 | .mode = 0o644, |
| 509 | }, | 509 | }, |
| 510 | .{ | 510 | .{ |
| 511 | .name = "small2.txt", | 511 | .name = "small2.txt", |
| 512 | .size = 11, | 512 | .size = 11, |
| 513 | .file_type = .normal, | 513 | .kind = .normal, |
| 514 | .mode = 0o644, | 514 | .mode = 0o644, |
| 515 | }, | 515 | }, |
| 516 | }, | 516 | }, |
| ... | @@ -525,14 +525,14 @@ test "tar run Go test cases" { | ... | @@ -525,14 +525,14 @@ test "tar run Go test cases" { |
| 525 | .{ | 525 | .{ |
| 526 | .name = "GNU2/GNU2/long-path-name", | 526 | .name = "GNU2/GNU2/long-path-name", |
| 527 | .link_name = "GNU4/GNU4/long-linkpath-name", | 527 | .link_name = "GNU4/GNU4/long-linkpath-name", |
| 528 | .file_type = .symbolic_link, | 528 | .kind = .symbolic_link, |
| 529 | }, | 529 | }, |
| 530 | }, | 530 | }, |
| 531 | }, | 531 | }, |
| 532 | .{ | 532 | .{ |
| 533 | // has gnu type D (directory) and S (sparse) blocks | 533 | // has gnu type D (directory) and S (sparse) blocks |
| 534 | .path = "gnu-incremental.tar", | 534 | .path = "gnu-incremental.tar", |
| 535 | .err = error.TarUnsupportedFileType, | 535 | .err = error.TarUnsupportedHeader, |
| 536 | }, | 536 | }, |
| 537 | .{ | 537 | .{ |
| 538 | // should use values only from last pax header | 538 | // should use values only from last pax header |
| ... | @@ -541,7 +541,7 @@ test "tar run Go test cases" { | ... | @@ -541,7 +541,7 @@ test "tar run Go test cases" { |
| 541 | .{ | 541 | .{ |
| 542 | .name = "bar", | 542 | .name = "bar", |
| 543 | .link_name = "PAX4/PAX4/long-linkpath-name", | 543 | .link_name = "PAX4/PAX4/long-linkpath-name", |
| 544 | .file_type = .symbolic_link, | 544 | .kind = .symbolic_link, |
| 545 | }, | 545 | }, |
| 546 | }, | 546 | }, |
| 547 | }, | 547 | }, |
| ... | @@ -620,7 +620,7 @@ test "tar run Go test cases" { | ... | @@ -620,7 +620,7 @@ test "tar run Go test cases" { |
| 620 | .files = &[_]Case.File{ | 620 | .files = &[_]Case.File{ |
| 621 | .{ | 621 | .{ |
| 622 | .name = "123456789/" ** 30, | 622 | .name = "123456789/" ** 30, |
| 623 | .file_type = .directory, | 623 | .kind = .directory, |
| 624 | }, | 624 | }, |
| 625 | }, | 625 | }, |
| 626 | }, | 626 | }, |
| ... | @@ -668,7 +668,7 @@ test "tar run Go test cases" { | ... | @@ -668,7 +668,7 @@ test "tar run Go test cases" { |
| 668 | const expected = case.files[i]; | 668 | const expected = case.files[i]; |
| 669 | try std.testing.expectEqualStrings(expected.name, actual.name); | 669 | try std.testing.expectEqualStrings(expected.name, actual.name); |
| 670 | try std.testing.expectEqual(expected.size, actual.size); | 670 | try std.testing.expectEqual(expected.size, actual.size); |
| 671 | try std.testing.expectEqual(expected.file_type, actual.file_type); | 671 | try std.testing.expectEqual(expected.kind, actual.kind); |
| 672 | try std.testing.expectEqual(expected.mode, actual.mode); | 672 | try std.testing.expectEqual(expected.mode, actual.mode); |
| 673 | try std.testing.expectEqualStrings(expected.link_name, actual.link_name); | 673 | try std.testing.expectEqualStrings(expected.link_name, actual.link_name); |
| 674 | | 674 | |
| ... | @@ -955,7 +955,7 @@ fn TarReader(comptime ReaderType: type) type { | ... | @@ -955,7 +955,7 @@ fn TarReader(comptime ReaderType: type) type { |
| 955 | link_name: []const u8, // target name of symlink | 955 | link_name: []const u8, // target name of symlink |
| 956 | size: usize, // size of the file in bytes | 956 | size: usize, // size of the file in bytes |
| 957 | mode: u32, | 957 | mode: u32, |
| 958 | file_type: Header.FileType, | 958 | kind: Header.Kind, |
| 959 | | 959 | |
| 960 | reader: ReaderType, | 960 | reader: ReaderType, |
| 961 | | 961 | |
| ... | @@ -1004,7 +1004,7 @@ fn TarReader(comptime ReaderType: type) type { | ... | @@ -1004,7 +1004,7 @@ fn TarReader(comptime ReaderType: type) type { |
| 1004 | .name = self.file_name_buffer[0..0], | 1004 | .name = self.file_name_buffer[0..0], |
| 1005 | .link_name = self.link_name_buffer[0..0], | 1005 | .link_name = self.link_name_buffer[0..0], |
| 1006 | .size = 0, | 1006 | .size = 0, |
| 1007 | .file_type = .normal, | 1007 | .kind = .normal, |
| 1008 | .mode = 0, | 1008 | .mode = 0, |
| 1009 | .reader = self.reader, | 1009 | .reader = self.reader, |
| 1010 | }; | 1010 | }; |
| ... | @@ -1026,14 +1026,14 @@ fn TarReader(comptime ReaderType: type) type { | ... | @@ -1026,14 +1026,14 @@ fn TarReader(comptime ReaderType: type) type { |
| 1026 | self.initFile(); | 1026 | self.initFile(); |
| 1027 | | 1027 | |
| 1028 | while (try self.readHeader()) |header| { | 1028 | while (try self.readHeader()) |header| { |
| 1029 | const file_type = header.fileType(); | 1029 | const kind = header.kind(); |
| 1030 | const size: usize = @intCast(try header.fileSize()); | 1030 | const size: usize = @intCast(try header.size()); |
| 1031 | self.padding = blockPadding(size); | 1031 | self.padding = blockPadding(size); |
| 1032 | | 1032 | |
| 1033 | switch (file_type) { | 1033 | switch (kind) { |
| 1034 | // File types to retrun upstream | 1034 | // File types to retrun upstream |
| 1035 | .directory, .normal, .symbolic_link => { | 1035 | .directory, .normal, .symbolic_link => { |
| 1036 | self.file.file_type = file_type; | 1036 | self.file.kind = kind; |
| 1037 | self.file.mode = try header.mode(); | 1037 | self.file.mode = try header.mode(); |
| 1038 | | 1038 | |
| 1039 | // set file attributes if not already set by prefix/extended headers | 1039 | // set file attributes if not already set by prefix/extended headers |
| ... | @@ -1083,10 +1083,10 @@ fn TarReader(comptime ReaderType: type) type { | ... | @@ -1083,10 +1083,10 @@ fn TarReader(comptime ReaderType: type) type { |
| 1083 | }, | 1083 | }, |
| 1084 | // All other are unsupported header types | 1084 | // All other are unsupported header types |
| 1085 | else => { | 1085 | else => { |
| 1086 | const d = self.diagnostics orelse return error.TarUnsupportedFileType; | 1086 | const d = self.diagnostics orelse return error.TarUnsupportedHeader; |
| 1087 | try d.errors.append(d.allocator, .{ .unsupported_file_type = .{ | 1087 | try d.errors.append(d.allocator, .{ .unsupported_file_type = .{ |
| 1088 | .file_name = try d.allocator.dupe(u8, header.name()), | 1088 | .file_name = try d.allocator.dupe(u8, header.name()), |
| 1089 | .file_type = file_type, | 1089 | .file_type = kind, |
| 1090 | } }); | 1090 | } }); |
| 1091 | }, | 1091 | }, |
| 1092 | } | 1092 | } |