From d1d42a2e7320f1d3eabda739f26e0f4b187ccbfa Mon Sep 17 00:00:00 2001 From: Guilherme Nascimento Date: Tue, 8 Sep 2026 08:57:45 -0300 Subject: [PATCH 1/5] Fixes Example #2 using fileperms Same as: https://github.com/php/doc-en/pull/5842 Incorrect: ```php case 0x8000: // regular $info = 'r'; ``` --- reference/filesystem/functions/fileperms.xml | 48 +++++++------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/reference/filesystem/functions/fileperms.xml b/reference/filesystem/functions/fileperms.xml index 53e26014c0..b8cf8f2b1e 100644 --- a/reference/filesystem/functions/fileperms.xml +++ b/reference/filesystem/functions/fileperms.xml @@ -90,51 +90,35 @@ echo substr(sprintf('%o', fileperms('/etc/passwd')), -4); $perms = fileperms('/etc/passwd'); switch ($perms & 0xF000) { - case 0xC000: // Socket - $info = 's'; - break; - case 0xA000: // Enlace simbólico - $info = 'l'; - break; - case 0x8000: // Regular - $info = 'r'; - break; - case 0x6000: // Especial de bloque - $info = 'b'; - break; - case 0x4000: // Directorio - $info = 'd'; - break; - case 0x2000: // Especial de carácter - $info = 'c'; - break; - case 0x1000: // Pipe FIFO - $info = 'p'; - break; - default: // Desconocido - $info = 'u'; + case 0x1000: $info = 'p'; break; // FIFO pipe + case 0x2000: $info = 'c'; break; // character special + case 0x4000: $info = 'd'; break; // directory + case 0x6000: $info = 'b'; break; // block special + case 0x8000: $info = '-'; break; // regular + case 0xA000: $info = 'l'; break; // symbolic link (reachable when using lstat function) + case 0xC000: $info = 's'; break; // socket + + // unknown + default: $info = 'u'; } // Propietario +$setuid = $perms & 0x0800; $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); -$info .= (($perms & 0x0040) ? - (($perms & 0x0800) ? 's' : 'x' ) : - (($perms & 0x0800) ? 'S' : '-')); +$info .= (($perms & 0x0040) ? ($setuid ? 's' : 'x') : ($setuid ? 'S' : '-')); // Grupo +$setgid = $perms & 0x0400; $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); -$info .= (($perms & 0x0008) ? - (($perms & 0x0400) ? 's' : 'x' ) : - (($perms & 0x0400) ? 'S' : '-')); +$info .= (($perms & 0x0008) ? ($setgid ? 's' : 'x') : ($setgid ? 'S' : '-')); // Todos +$sticky = $perms & 0x0200; $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); -$info .= (($perms & 0x0001) ? - (($perms & 0x0200) ? 't' : 'x' ) : - (($perms & 0x0200) ? 'T' : '-')); +$info .= (($perms & 0x0001) ? ($sticky ? 't' : 'x') : ($sticky ? 'T' : '-')); echo $info; ?> From 31cf7e310b8fd36cb6d2c15e0dc694607d526aa4 Mon Sep 17 00:00:00 2001 From: Guilherme Nascimento Date: Tue, 8 Sep 2026 09:01:57 -0300 Subject: [PATCH 2/5] Update fileperms.xml with additional file types --- reference/filesystem/functions/fileperms.xml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/reference/filesystem/functions/fileperms.xml b/reference/filesystem/functions/fileperms.xml index b8cf8f2b1e..788bb41323 100644 --- a/reference/filesystem/functions/fileperms.xml +++ b/reference/filesystem/functions/fileperms.xml @@ -95,11 +95,22 @@ switch ($perms & 0xF000) { case 0x4000: $info = 'd'; break; // directory case 0x6000: $info = 'b'; break; // block special case 0x8000: $info = '-'; break; // regular - case 0xA000: $info = 'l'; break; // symbolic link (reachable when using lstat function) + case 0xA000: $info = 'l'; break; // symbolic link case 0xC000: $info = 's'; break; // socket // unknown default: $info = 'u'; + + case 0x1000: $info = 'p'; break; // Pipe FIFO + case 0x2000: $info = 'c'; break; // Especial de carácter + case 0x4000: $info = 'd'; break; // Directorio + case 0x6000: $info = 'b'; break; // Especial de bloque + case 0x8000: $info = 'r'; break; // Regular + case 0xA000: $info = 'l'; break; // Enlace simbólico (accesible al utilizar la función lstat) + case 0xC000: $info = 's'; break; // Socket + + // Desconocido + default: $info = 'u'; } // Propietario From f535690acf0f1f52fb4c49e007a5f8531e763533 Mon Sep 17 00:00:00 2001 From: Guilherme Nascimento Date: Tue, 8 Sep 2026 09:02:41 -0300 Subject: [PATCH 3/5] Refactor file permissions switch case comments Updated comments in fileperms.xml to Spanish and removed unknown case. --- reference/filesystem/functions/fileperms.xml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/reference/filesystem/functions/fileperms.xml b/reference/filesystem/functions/fileperms.xml index 788bb41323..0634685ffd 100644 --- a/reference/filesystem/functions/fileperms.xml +++ b/reference/filesystem/functions/fileperms.xml @@ -90,17 +90,6 @@ echo substr(sprintf('%o', fileperms('/etc/passwd')), -4); $perms = fileperms('/etc/passwd'); switch ($perms & 0xF000) { - case 0x1000: $info = 'p'; break; // FIFO pipe - case 0x2000: $info = 'c'; break; // character special - case 0x4000: $info = 'd'; break; // directory - case 0x6000: $info = 'b'; break; // block special - case 0x8000: $info = '-'; break; // regular - case 0xA000: $info = 'l'; break; // symbolic link - case 0xC000: $info = 's'; break; // socket - - // unknown - default: $info = 'u'; - case 0x1000: $info = 'p'; break; // Pipe FIFO case 0x2000: $info = 'c'; break; // Especial de carácter case 0x4000: $info = 'd'; break; // Directorio From 1a2bc880fec806d4a3fb640271ac42cbed3e8bf2 Mon Sep 17 00:00:00 2001 From: Guilherme Nascimento Date: Tue, 8 Sep 2026 10:42:26 -0300 Subject: [PATCH 4/5] EN-Revision --- reference/filesystem/functions/fileperms.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/filesystem/functions/fileperms.xml b/reference/filesystem/functions/fileperms.xml index 0634685ffd..1342c0eb8c 100644 --- a/reference/filesystem/functions/fileperms.xml +++ b/reference/filesystem/functions/fileperms.xml @@ -1,6 +1,6 @@ - + From d8df344a3763ac5b5664a91a095d69d7ed4fafdc Mon Sep 17 00:00:00 2001 From: Guilherme Nascimento Date: Tue, 8 Sep 2026 11:04:09 -0300 Subject: [PATCH 5/5] Fix representation of regular file type in XML --- reference/filesystem/functions/fileperms.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/filesystem/functions/fileperms.xml b/reference/filesystem/functions/fileperms.xml index 1342c0eb8c..65bea6f01e 100644 --- a/reference/filesystem/functions/fileperms.xml +++ b/reference/filesystem/functions/fileperms.xml @@ -94,7 +94,7 @@ switch ($perms & 0xF000) { case 0x2000: $info = 'c'; break; // Especial de carácter case 0x4000: $info = 'd'; break; // Directorio case 0x6000: $info = 'b'; break; // Especial de bloque - case 0x8000: $info = 'r'; break; // Regular + case 0x8000: $info = '-'; break; // Regular case 0xA000: $info = 'l'; break; // Enlace simbólico (accesible al utilizar la función lstat) case 0xC000: $info = 's'; break; // Socket