{"thread":{"id":"36920","subject":"[PATCH] gitk: avoid mkdtemp on Windows","startedAt":"2014-06-15T22:23:56Z","lastAt":"2014-06-15T22:23:56Z","messageCount":1,"participants":["David Aguilar"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"244235","messageId":"1402871036-1389-1-git-send-email-davvid@gmail.com","threadId":"36920","inReplyTo":null,"subject":"[PATCH] gitk: avoid mkdtemp on Windows","fromName":"David Aguilar","fromEmail":"davvid@gmail.com","sentAt":"2014-06-15T22:23:56Z","receivedAt":"2014-06-15T22:23:56Z","isPatch":true,"sender":{"key":"davvid@gmail.com","avatar":"https://avatars.githubusercontent.com/u/13196?v=4"},"body":"105b5d3fbb1c00bb0aeaf9d3e0fbe26a7b1993fc introduced a dependency\non mkdtemp, which is not available on Windows.\n\nRestore the original temporary directory behavior for Windows so\nthat gitk creates temporary directories in the current\nrepository.\n\nThe Unix code path retains new TMPDIR behavior.\n\nReported-by: Pat Thoyts <patthoyts@users.sourceforge.net>\nHelped-by: brian m. carlson <sandals@crustytoothpaste.net>\nSigned-off-by: David Aguilar <davvid@gmail.com>\n---\n gitk | 21 ++++++++++++++-------\n 1 file changed, 14 insertions(+), 7 deletions(-)\n\ndiff --git a/gitk b/gitk\nindex 41e5071..66d8c9e 100755\n--- a/gitk\n+++ b/gitk\n@@ -3496,15 +3496,22 @@ proc gitknewtmpdir {} {\n     global diffnum gitktmpdir gitdir env\n \n     if {![info exists gitktmpdir]} {\n-\tif {[info exists env(GITK_TMPDIR)]} {\n-\t    set tmpdir $env(GITK_TMPDIR)\n-\t} elseif {[info exists env(TMPDIR)]} {\n-\t    set tmpdir $env(TMPDIR)\n+\tif {$::tcl_platform(platform) eq {windows}} {\n+\t    # Windows does not have mkdtemp so use the current directory\n+\t    # to avoid using an unsafe pattern in a world-writeable\n+\t    # temporary directory.\n+\t    set gitktmpdir [file join $gitdir [format \".gitk-tmp.%s\" [pid]]]\n \t} else {\n-\t    set tmpdir $gitdir\n+\t    if {[info exists env(GITK_TMPDIR)]} {\n+\t\tset tmpdir $env(GITK_TMPDIR)\n+\t    } elseif {[info exists env(TMPDIR)]} {\n+\t\tset tmpdir $env(TMPDIR)\n+\t    } else {\n+\t\tset tmpdir $gitdir\n+\t    }\n+\t    set gitktmpformat [file join $tmpdir \".gitk-tmp.XXXXXX\"]\n+\t    set gitktmpdir [exec mktemp -d $gitktmpformat]\n \t}\n-\tset gitktmpformat [file join $tmpdir \".gitk-tmp.XXXXXX\"]\n-\tset gitktmpdir [exec mktemp -d $gitktmpformat]\n \tif {[catch {file mkdir $gitktmpdir} err]} {\n \t    error_popup \"[mc \"Error creating temporary directory %s:\" $gitktmpdir] $err\"\n \t    unset gitktmpdir\n-- \n2.0.0.257.g75cc6c6\n"}]}