Code

git-gui: Correctly handle spaces in filepaths.
authorShawn O. Pearce <spearce@spearce.org>
Mon, 29 Jan 2007 08:09:28 +0000 (03:09 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Mon, 29 Jan 2007 08:09:28 +0000 (03:09 -0500)
Anytime are about to open a pipe on what may be user data we need to
make sure the value is escaped correctly into a Tcl list, so that the
executed subprocess will receive the right arguments.  For the most
part we were already doing this correctly, but a handful of locations
did not.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh

index d5490cdde0af69102e8f5a4f0038f60528968ff9..160309b2c4a118ed89ef0ac099475f63465e4c29 100755 (executable)
@@ -3087,7 +3087,8 @@ proc ls_tree {w tree_id name} {
        lappend browser_stack($w) [list $tree_id $name]
        $w conf -state disabled
 
-       set fd [open "| git ls-tree -z $tree_id" r]
+       set cmd [list git ls-tree -z $tree_id]
+       set fd [open "| $cmd" r]
        fconfigure $fd -blocking 0 -translation binary -encoding binary
        fileevent $fd readable [list read_ls_tree $fd $w]
 }
@@ -3247,7 +3248,8 @@ proc show_blame {commit path} {
        wm title $w "[appname] ([reponame]): File Viewer"
 
        set blame_data($w,total_lines) 0
-       set fd [open "| git cat-file blob $commit:$path" r]
+       set cmd [list git cat-file blob "$commit:$path"]
+       set fd [open "| $cmd" r]
        fconfigure $fd -blocking 0 -translation lf -encoding binary
        fileevent $fd readable [list read_blame_catfile $fd $w $commit $path \
                $texts $w.out.linenumber $w.out.file]