mirror of
https://github.com/tsolomko/SWCompression.git
synced 2026-06-23 14:56:41 +00:00
Added reliable way for finding out if an entry is a directory for ms-dos and unix container creator's systems.
This commit is contained in:
@@ -81,7 +81,14 @@ public class ZipEntry: ContainerEntry {
|
||||
Particularly, it is true if size of data is 0 and last character of entry's name is '/'.
|
||||
*/
|
||||
public var isDirectory: Bool {
|
||||
return self.size == 0 && self.name.characters.last == "/"
|
||||
let hostSystem = (cdEntry.versionMadeBy & 0xFF00) >> 8
|
||||
if hostSystem == 0 || hostSystem == 3 { // MS-DOS or UNIX case.
|
||||
// In both of this cases external file attributes indicate if this is a directory.
|
||||
// This is indicated by a special bit in the lowest byte of attributes.
|
||||
return cdEntry.externalFileAttributes & 0x10 != 0
|
||||
} else {
|
||||
return size == 0 && name.characters.last == "/"
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user