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

Reply via email to