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