Ticket UUID: | cc74e50996e20cbb6a851087b36c52eb75526aa4 | |||
Title: | open command fails with .ext file extension (only) | |||
Type: | Bug | Version: | core-8-6-branch | |
Submitter: | fvogel | Created on: | 2019-04-13 09:56:59 | |
Subsystem: | 18. Commands M-Z | Assigned To: | fvogel | |
Priority: | 5 Medium | Severity: | Minor | |
Status: | Closed | Last Modified: | 2019-05-17 10:12:14 | |
Resolution: | Invalid | Closed By: | fvogel | |
Closed on: | 2019-05-17 10:12:14 | |||
Description: |
open "E:/tcltk-fossil/tcltk/5 7 8.ext" w ; # fails: permission denied Changing the file extension to .txt, or .exe, or .zer, or whatever, or removing the extension from the filename, let this command work. It seems to fail with ".ext" file extension only. This happens on a Windows 10 machine running Tcl as a normal unpriviledged user, however I can read and write files on disk E:\ It does not happen on a Vista machine on which I'm an admin (that said, directory is different). Investigation in the source code shows that the call (tclWinChan.c: 951): handle = CreateFile(nativeName, accessMode, shareMode, NULL, createMode, flags, (HANDLE) NULL); returns INVALID_HANDLE_VALUE, indicating failure of file creation. Arguments of this call are: nativeName = 0x00b6ccd8 "E:\tcltk-fossil\tcltk\5 7 8.ext" accessMode = 1073741824 shareMode = 3 createMode = 2 flags = 128 When running: open "E:/tcltk-fossil/tcltk/5 7 8.txt" wthen the same call succeeds (with the same arguments, except the filename which now has .txt extension instead of .ext). So the open command may fail just because a filename has .ext extension? That's weird... | |||
User Comments: |
fvogel added on 2019-05-17 10:12:14:
I have analyzed thus deeper and have found that this problem is due to a third party software "protecting" the computer. Disabling this software product makes the probkem diappear. Tcl has no responsibility here. Closing as Invalid. fvogel added on 2019-05-16 07:05:29: I can reproduce under python: Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32 >>> open('E:/tcltk-fossil/tcltk/5 7 8.ext', 'a').close() Traceback (most recent call last): File "<stdin>", line 1, in <module> PermissionError: [Errno 13] Permission denied: 'E:/tcltk-fossil/tcltk/5 7 8.ext' >>> Replacing the .ext extension by .txt makes the problem vanish. So it's the same in Tcl and in Python. sebres added on 2019-05-14 11:46:26: Did you try to disable Antivirus (or Real Protection)? Maybe you could try a create with something else, like `touch` from mingw or from other langs (like perl or python):
sebres added on 2019-05-14 11:39:45:
Hmmm... the create via file explorer seems to be not really a create - it would create a "New Dokument.txt" and then entering rename "dialog".
So it is not really the same... quasi comparable then with Anyway, I tried it also at home on PC of my children. Not reproduceable (I can create it without any error). fvogel added on 2019-05-13 09:21:24: Thanks for your answer. Yes I can create the file with the explorer, no problem. sebres added on 2019-05-13 08:48:17: > This happens on a Windows 10 machine running Tcl as a normal unpriviledged user, however I can read and write files on disk E:\ Have you tried to create this file from file explorer, François? I mean like enter "E:\tcltk-fossil\tcltk", right click -> new file -> "5 7 8.ext". Because I don't have any issue doing Maybe a rude Antivirus could cause this? fvogel added on 2019-05-12 17:33:46: For the records, I have run into this while investigating Tk test suite failures on that Win10 machine, that do not happen on a Vista machine. For the record, ""E:\tcltk-fossil\tcltk" is the directory returned on that Win10 machine by proc initialdir in winDialog.test, which just returns tcltest::temporaryDirectory. These failures reported by the Tk test suite are: ==== winDialog-5.7.6 GetFileName: All/extension FAILED ==== Contents of test case: # In 8.6.4 this combination resulted in bar.ext.ext which is bad start {set x [tk_getSaveFile -filetypes {{All *}} -defaultextension {ext} -title Save]} set msg {} then { if {[catch {SetText [vista? 0x47C 0x3e9] bar} msg]} { Click cancel } else { Click ok } } set x "[file tail $x]$msg" ---- Result was: ---- Result should have been (exact matching): bar.ext ==== winDialog-5.7.6 FAILED ==== winDialog-5.7.7 tk_getOpenFile: -defaultextension FAILED ==== Contents of test case: unset -nocomplain x tcltest::makeFile "" "5 7 7.ext" [initialdir] start {set x [tk_getOpenFile -defaultextension ext -initialdir [file nativename [initialdir]] -initialfile "5 7 7" -title Foo]} then { Click ok } return $x ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: couldn't open "E:/tcltk-fossil/tk/win/5 7 7.ext": permission denied while executing "open $fullName w" (procedure "tcltest::makeFile" line 13) invoked from within "tcltest::makeFile "" "5 7 7.ext" [initialdir]" ("uplevel" body line 3) invoked from within "uplevel 1 $script" ---- errorCode: POSIX EACCES {permission denied} ==== winDialog-5.7.7 FAILED initialdir= E:/tcltk-fossil/tk/win ==== winDialog-5.7.8 tk_getOpenFile: -defaultextension FAILED ==== Contents of test case: unset -nocomplain x puts "initialdir= [initialdir]" tcltest::makeFile "" "5 7 8.ext" [initialdir] tk_messageBox start {set x [tk_getOpenFile -defaultextension ext -initialdir [file nativename [initialdir]] -initialfile "5 7 8.ext" -title Foo]} then { Click ok } return $x ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: couldn't open "E:/tcltk-fossil/tk/win/5 7 8.ext": permission denied while executing "open $fullName w" (procedure "tcltest::makeFile" line 13) invoked from within "tcltest::makeFile "" "5 7 8.ext" [initialdir]" ("uplevel" body line 4) invoked from within "uplevel 1 $script" ---- errorCode: POSIX EACCES {permission denied} ==== winDialog-5.7.8 FAILED |