diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2011-10-11 13:19:54 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2011-10-11 13:19:54 (GMT) |
commit | 4a83f77ba9ac5d498e841d925a930391543879b9 (patch) | |
tree | 9494539c9c9fdff546f7b6e6c825cdff99f9a96e | |
parent | 391054f69af9bba47e19c096295d0711b49b3321 (diff) | |
download | tcl-4a83f77ba9ac5d498e841d925a930391543879b9.zip tcl-4a83f77ba9ac5d498e841d925a930391543879b9.tar.gz tcl-4a83f77ba9ac5d498e841d925a930391543879b9.tar.bz2 |
[Bug 2935503] Incorrect mode field returned by file stat command
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | tests/io.test | 6 | ||||
-rw-r--r-- | win/tclWinFile.c | 6 |
3 files changed, 11 insertions, 6 deletions
@@ -1,3 +1,8 @@ +2011-10-11 Jan Nijtmans <nijtmans@users.sf.net> + + * win/tclWinFile.c: [Bug 2935503] Incorrect mode field + * tests/io.test: returned by file stat command + 2011-10-07 Jan Nijtmans <nijtmans@users.sf.net> * win/tclWinChan.c: Fix various gcc warnings diff --git a/tests/io.test b/tests/io.test index ed2619a..6029f18 100644 --- a/tests/io.test +++ b/tests/io.test @@ -5228,9 +5228,9 @@ test io-40.1 {POSIX open access modes: RDWR} { close $f set x } {zzy abzzy} -test io-40.2 {POSIX open access modes: CREAT} {unixOnly} { +test io-40.2 {POSIX open access modes: CREAT} { file delete $path(test3) - set f [open $path(test3) {WRONLY CREAT} 0600] + set f [open $path(test3) {WRONLY CREAT} 0666] file stat $path(test3) stats set x [format "0%o" [expr $stats(mode)&0777]] puts $f "line 1" @@ -5239,7 +5239,7 @@ test io-40.2 {POSIX open access modes: CREAT} {unixOnly} { lappend x [gets $f] close $f set x -} {0600 {line 1}} +} {0666 {line 1}} # some tests can only be run is umask is 2 # if "umask" cannot be run, the tests will be skipped. diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 316a827..c98c42c 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -1074,7 +1074,7 @@ static int WinIsReserved( * volume, because for NTFS root volumes, the getFileAttributesProc * returns a 'hidden' attribute when it should not. * - * We never make any calss to a 'get attributes' routine here, + * We never make any calls to a 'get attributes' routine here, * since we have arranged things so that our caller already knows * such information. * @@ -2023,8 +2023,8 @@ NativeStatMode(DWORD attr, int checkLinks, int isExec) * other positions. */ - mode |= (mode & 0x0700) >> 3; - mode |= (mode & 0x0700) >> 6; + mode |= (mode & (S_IREAD|S_IWRITE|S_IEXEC)) >> 3; + mode |= (mode & (S_IREAD|S_IWRITE|S_IEXEC)) >> 6; return (unsigned short)mode; } |