diff options
Diffstat (limited to 'CPP/7zip/Archive/Zip/ZipItem.cpp')
-rw-r--r-- | CPP/7zip/Archive/Zip/ZipItem.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/CPP/7zip/Archive/Zip/ZipItem.cpp b/CPP/7zip/Archive/Zip/ZipItem.cpp index ae88944d..f2ccc814 100644 --- a/CPP/7zip/Archive/Zip/ZipItem.cpp +++ b/CPP/7zip/Archive/Zip/ZipItem.cpp @@ -114,7 +114,7 @@ bool CItem::IsDir() const case NHostOS::kMVS: return false; // change it throw kUnknownAttributes; case NHostOS::kUnix: - return (highAttrib & NUnixAttrib::kIFDIR) != 0; + return ((highAttrib & NUnixAttrib::kIFMT) == NUnixAttrib::kIFDIR); default: return false; } @@ -130,6 +130,11 @@ UInt32 CItem::GetWinAttrib() const if (FromCentral) winAttrib = ExternalAttrib; break; + case NHostOS::kUnix: + // do we need to clear 16 low bits in this case? + if (FromCentral) + winAttrib = ExternalAttrib & 0xFFFF0000; + break; } if (IsDir()) // test it; winAttrib |= FILE_ATTRIBUTE_DIRECTORY; |