Fix incorrect posixPermissions in tar in some cases

Sometimes "mode" fields also includes unix type which we haven't accounted for.
This commit is contained in:
Timofey Solomko
2017-08-16 18:36:18 +03:00
parent 15b9169448
commit e40ddacd07
+2 -1
View File
@@ -168,13 +168,14 @@ public class TarEntry: ContainerEntry {
var attributesDict = [FileAttributeKey: Any]()
let blockStartIndex = pointerData.index
// File name
fileName = try pointerData.nullEndedAsciiString(cutoff: 100)
// File mode
guard let octalPosixPermissions = Int(try pointerData.nullSpaceEndedAsciiString(cutoff: 8))
else { throw TarError.fieldIsNotNumber }
let posixPermissions = octalPosixPermissions.octalToDecimal()
let posixPermissions = octalPosixPermissions.octalToDecimal() & 0xFFF
attributesDict[FileAttributeKey.posixPermissions] = posixPermissions
mode = posixPermissions