The problem occurs on Windows 7 64bit and 32bit Tcl (such as ActiveTcl or custom build). I did not check 32bit Windows 7.
On a Windows Vista 32bit this works fine, though.
The problem is file normalize removes the etc part of the path and this makes the path invalid.
% file exists C:/Windows/system32/drivers/etc/hosts
1
% file normalize C:/Windows/system32/drivers/etc/hosts
C:/Windows/System32/drivers//hosts
Changing the WOW64 does not change the behavior:
% ::twapi::Wow64EnableWow64FsRedirection 0
% file normalize C:/Windows/system32/drivers/etc/hosts
C:/Windows/System32/drivers//hosts
% ::twapi::Wow64EnableWow64FsRedirection 1
% file normalize C:/Windows/system32/drivers/etc/hosts
C:/Windows/System32/drivers//hosts
Please let me know if I can provide any additional information or if I can help with anything related to this bug.
Small update - changing WOW64 seems to resolve the issue - previous example did not show it as I ran it in same process (and Tcl caches file normalize results):
% package require twapi ; ::twapi::Wow64EnableWow64FsRedirection 0
% file normalize C:/Windows/system32/drivers/etc/hosts
C:/Windows/System32/drivers/etc/hosts
And in a new process:
% package require twapi ; ::twapi::Wow64EnableWow64FsRedirection 1
% file normalize C:/Windows/system32/drivers/etc/hosts
C:/Windows/System32/drivers//hosts
So this seems to be an issue with how Windows handles drivers\etc in WOW64 mode.
Also, when WOW64 is enabled:
% glob C:/Windows/system32/drivers/etc
C:/Windows/system32/drivers/etc
% glob C:/Windows/system32/drivers/e*
C:/Windows/system32/drivers/en-US
% glob -type hidden C:/Windows/system32/drivers/e*
no files matched glob pattern "C:/Windows/system32/drivers/e*"
So it may be an issue the file is not visible when listing contents of directory.
With WOW64 disabled:
% glob C:/Windows/system32/drivers/et*
C:/Windows/system32/drivers/etc
Isn't this a duplicate of:
[Tcl-bugs] [ tcl-Bugs-3092089 ] [file normalize] can remove path components
?
Does the fix suggested there by Mark Garvey work for you?
Regards,
Jan Nijtmans
Similar to 3092089/3587096, but this one is not fixed yet.