[file readable], a subcommand of [file], returns 1 if name is readable by the current user, and 0 otherwise.
When [file readable] returns 1, it does not necessarily mean that [open file r] will succeed. For example, [file readable] might return 1, but [open`] fails because someone has a write lock.
On NTFS volumes, [file readable] doesn't currently take account of the more complex Windows user/group stuff, so can return the wrong value. Code contributions using GetSecurityInfo() much appreciated.
RS 2007-02-16: Quick workaround:
proc file'readable name { set rc [catch {open $name} fp] if {$rc==0} {close $fp} expr {$rc==0} }
jdc 2007-10-23: After upgrading from Tcl 8.4.9 to 8.4.16, I experienced problems with [file readable] for file on a SMB mount. [file readable] always returns 0, unless the others have read privilege on the file. Tcl 8.5b1 has the same behavior.