improve mode mask detection

This commit is contained in:
Robin Appelman 2020-06-29 13:37:17 +02:00
commit 24db40c674

View file

@ -116,8 +116,8 @@ class NativeFileInfo implements IFileInfo {
*/ */
public function isDirectory() { public function isDirectory() {
$mode = $this->getMode(); $mode = $this->getMode();
if ($mode > 0x80) { if ($mode > 0x1000) {
return (bool)($mode & 0x4000); // 0x80: unix directory flag return (bool)($mode & 0x4000); // 0x4000: unix directory flag
} else { } else {
return (bool)($mode & IFileInfo::MODE_DIRECTORY); return (bool)($mode & IFileInfo::MODE_DIRECTORY);
} }
@ -128,7 +128,7 @@ class NativeFileInfo implements IFileInfo {
*/ */
public function isReadOnly() { public function isReadOnly() {
$mode = $this->getMode(); $mode = $this->getMode();
if ($mode > 0x80) { if ($mode > 0x1000) {
return !(bool)($mode & 0x80); // 0x80: owner write permissions return !(bool)($mode & 0x80); // 0x80: owner write permissions
} else { } else {
return (bool)($mode & IFileInfo::MODE_READONLY); return (bool)($mode & IFileInfo::MODE_READONLY);
@ -140,7 +140,7 @@ class NativeFileInfo implements IFileInfo {
*/ */
public function isHidden() { public function isHidden() {
$mode = $this->getMode(); $mode = $this->getMode();
if ($mode > 0x80) { if ($mode > 0x1000) {
return strlen($this->name) > 0 && $this->name[0] === '.'; return strlen($this->name) > 0 && $this->name[0] === '.';
} else { } else {
return (bool)($mode & IFileInfo::MODE_HIDDEN); return (bool)($mode & IFileInfo::MODE_HIDDEN);
@ -152,7 +152,7 @@ class NativeFileInfo implements IFileInfo {
*/ */
public function isSystem() { public function isSystem() {
$mode = $this->getMode(); $mode = $this->getMode();
if ($mode > 0x80) { if ($mode > 0x1000) {
return false; return false;
} else { } else {
return (bool)($mode & IFileInfo::MODE_SYSTEM); return (bool)($mode & IFileInfo::MODE_SYSTEM);
@ -164,7 +164,7 @@ class NativeFileInfo implements IFileInfo {
*/ */
public function isArchived() { public function isArchived() {
$mode = $this->getMode(); $mode = $this->getMode();
if ($mode > 0x80) { if ($mode > 0x1000) {
return false; return false;
} else { } else {
return (bool)($mode & IFileInfo::MODE_ARCHIVE); return (bool)($mode & IFileInfo::MODE_ARCHIVE);