Thread (16 messages) flat view 16 messages, 4 authors, 2016-06-15

Re: [PATCH 1/2] Work around leftover temporary save file.

From: Pat Thoyts <hidden>
Date: 2016-06-15 22:47:24

Alex Riesen [off-list ref] writes:
On Tue, Sep 15, 2009 at 11:26, Pat Thoyts
[off-list ref] wrote:
quoted
If a file exists and is hidden on Windows the Tcl open command will
fail as the attributes provided in the CREAT call fail to match those
of the existing file. Forcing removal of the temporary file before we
begin solves any problems caused by previous failures to save the
application settings. An alternative would be to remove the hidden
attribute before calling 'open'.

Signed-off-by: Pat Thoyts <redacted>
---
 gitk |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/gitk b/gitk
index 1306178..a0214b7 100755
--- a/gitk
+++ b/gitk
@@ -2526,6 +2526,7 @@ proc savestuff {w} {
    if {$stuffsaved} return
    if {![winfo viewable .]} return
    catch {
+       if {[file exists ~/.gitk-new]} {file delete -force ~/.gitk-new}
maybe another gitk instance is writing it at exactly same moment
in time? Writing is known to take a few moments. Especially on Windows.
no - 'open $file w' is translated into O_WRONLY|O_CREAT|O_TRUNC
internally and passed to the win32 layer to get converted to a call to CreateFile with
GENERIC_WRITE, CREATE_ALWAYS and FILE_ATTRIBUTE_NORMAL. The file has
got FILE_ATTRIBUTE_HIDDEN though and as it exists and our attributes
do not match we get failed.
'open $file {O_WRONLY O_TRUNC}' would open it but we'd have to check
for non-existence and redo with O_CREAT if it was not already present.

See tclWinChan.c:TclpOpenFileChannel.

-- 
Pat Thoyts                            http://www.patthoyts.tk/
PGP fingerprint 2C 6E 98 07 2C 59 C8 97  10 CE 11 E6 04 E0 B9 DD
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help