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