Actions
Bug #10067
closedFile.file? misleading semantics & documentation for symbolic links
Bug #10067: File.file? misleading semantics & documentation for symbolic links
Description
The documentation for File.file? states:
"Returns true if the named file exists and is a regular file."
When trying that out I get the following results:
% /usr/bin/stat link File: `link' -> `file' Size: 4 Blocks: 0 IO Block: 4096 symbolic link Device: 16h/22d Inode: 2804357 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ robe) Gid: ( 1000/ robe) Access: 2014-07-19 01:01:51.514979670 +0200 Modify: 2014-07-19 01:01:50.799975936 +0200 Change: 2014-07-19 01:01:50.799975936 +0200 Birth: - % ruby -e "puts File.file?('link')" false % ruby -e "puts File.symlink?('link')" true % touch file % ruby -e "puts File.file?('link')" true % ruby -e "puts File.symlink?('link')" true % which is entirely not what one would expect.
You need to decide if the File ?-methods offer stat OR lstat semantic, change it and document it accordingly.
The current documentation and implementation behavior is especially confusing since the POSIX standard states that the type of a file can be either a regular file OR a symlink, not both at the same time.
Actions