ID: 4180
Updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
-Status: Open
+Status: Closed
Bug Type: *General Issues
Operating System: Linux 2.2.12-29.4smp #1 SMP Tue
PHP Version: 3.0.14
Previous Comments:
------------------------------------------------------------------------
[2000-10-11 12:58:17] [EMAIL PROTECTED]
Minor typo in bug report number / forgot to engage brain :)
------------------------------------------------------------------------
[2000-10-11 11:40:51] [EMAIL PROTECTED]
Olivier Cahange <[EMAIL PROTECTED]> reports this bug as being
fixed in 4.0.3RC1
------------------------------------------------------------------------
[2000-04-18 13:26:10] [EMAIL PROTECTED]
It appears that is_link is incorrect when testing a symbolic link file
whose target does not exist.
is_link("/absolute/path/to/my/link")
returns false when the link points to a non-existant target. I believe
it should return true based on the following C code:
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
main(int argc, char **argv)
{
struct stat buf;
char * file_name = argv[1];
lstat(file_name, &buf);
if (S_ISLNK(buf.st_mode))
{
printf("file is a link\n");
}
else
{
printf("file is not a link\n");
}
}
This prints "file is a link" even when the target doesn't exist.
This is an issue because you can't tell when the symlink already exists
even if it is incorrect. I've tried lstat (returns 0 length array),
fileexists (false), etc. symlink fails on the creation of the link
because it is there. It seems like the only way to detect this
condition is to have a successful readlink call combined with a false
file_exists or symlink call.
The ChangeLog for 3.0.15 and 3.0.16 doesn't address this issue as being
fixed.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=4180&edit=1