Paul Mackerras: The enclosed email comes from a Debian user who has a proposed patch for a recently reported bug c.f. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=466034
I'd be pleased if some Tcl-literate folks had a look, since I'm not a Tcl programmer. Do you have any comment, Paul? Thanks, -Steve On Sun, Feb 24, 2008 at 02:15:45AM +0300, kostix wrote: > I'm following the RFA #466481 -- this patch fixes issues reported > in #466034 and also possible other issues stems from the same kind > of programming error present in various places of dirdiff. > > Please test it for the tasks you do since I have only tested the > cases reported in #466034 plus making a patch + viewing it in an > external program. > > --- /usr/bin/dirdiff 2005-06-27 08:42:56.000000000 +0400 > +++ ./dirdiff 2008-02-24 02:13:06.000000000 +0300 > @@ -563,7 +563,7 @@ > if {$d1 == $d2} continue > set any 1 > $base.p.$sub1 add command -label "$d2" \ > - -command "makepatch \"$d1\" \"$d2\"" > + -command [list makepatch $d1 $d2] > } > if {$any} { > $base.p add cascade -label "$d1 ->" -menu $base.p.$sub1 > @@ -579,7 +579,7 @@ > set i 0 > foreach d $dirs { > if {!$dirreadonly($i)} { > - $base.t add command -label $d -command "touchfiles \"$d\"" > + $base.t add command -label $d -command [list touchfiles $d] > } > incr i > } > @@ -677,7 +677,7 @@ > set i 0 > foreach d $dirs { > .bar.options add checkbutton -label "Read-only $d" \ > - -variable dirreadonly($i) -command "readonlychange $i" > + -variable dirreadonly($i) -command [list readonlychange $i] > incr i > } > > @@ -1153,7 +1153,7 @@ > if {$xi != ""} { > set x [lindex $dirs $xi] > $diffbut add command -label "Show $x" \ > - -command "showfile \"$x\" \"$selfile\"" > + -command [list showfile $x $selfile] > } > } elseif {$numgroups > 1} { > if {$numgroups > 2} { > @@ -1163,7 +1163,7 @@ > lappend x [lindex $dirs $i] > } > $diffbut add command -label "$numgroups-way diff" \ > - -command "diffn {$x} {$selfile}" > + -command [list diffn $x $selfile] > } > for {set gn 1} {$gn < $numgroups} {incr gn} { > set yi [lindex $groupelts($gn) 0] > @@ -1184,7 +1184,7 @@ > set xi [lindex $groupelts($go) 0] > if {$xi == ""} continue > set x [lindex $dirs $xi] > - set cmd "diff2 \"$x\" \"$y\" \"$selfile\"" > + set cmd [list diff2 $x $y $selfile] > if {$numgroups <= 3} { > if {$compound_ok} { > $diffbut add command -label "$x vs. $y" \ > @@ -1283,7 +1283,7 @@ > set cl2 [lindex $bgcolors($ng) $age] > if {$im2 == "ex"} {set im2 ""} > set y [lindex $dirs $dst] > - set cmd "copyselfile \"$src\" \"$dst\" \"$selfile\" 0" > + set cmd [list copyselfile $src $dst $selfile 0] > if {$any == 1} { > if {$compound_ok} { > $copybut add command -label "$x -> $y" \ > @@ -1346,7 +1346,7 @@ > set im2 [lindex $agecolors($ng) $age] > set cl2 [lindex $bgcolors($ng) $age] > set y [lindex $dirs $dst] > - set cmd "copyselfile \"$src\" \"$dst\" \"$selfile\" 1" > + set cmd [list copyselfile $src $dst $selfile 1] > if {$any == 1} { > if {$compound_ok} { > $copybut add command -label "$x -> $y" \ > @@ -1392,10 +1392,10 @@ > if {$compound_ok} { > $copybut add command -label "Remove from $x" \ > -image ex -compound left \ > - -command "removeselfile \"$dst\" \"$selfile\"" > + -command [list removeselfile $dst $selfile] > } else { > $copybut add command -label "Remove from $x" \ > - -command "removeselfile \"$dst\" \"$selfile\"" > + -command [list removeselfile $dst $selfile] > } > } > } > @@ -1415,7 +1415,7 @@ > if {$dirreadonly($d)} continue > set y [lindex $dirs $d] > $copybut add command -label "$x -> $y" \ > - -command "copyselfile \"$s\" \"$d\" \"$selfile\" 0" > + -command [list copyselfile $s $d $selfile 0] > } > } > set needsep 1 > @@ -1429,10 +1429,10 @@ > if {$compound_ok} { > $copybut add command -label "Remove from $x" \ > -image ex -compound left \ > - -command "removeselfile \"$s\" \"$selfile\"" > + -command [list removeselfile $s $selfile] > } else { > $copybut add command -label "Remove from $x" \ > - -command "removeselfile \"$s\" \"$selfile\"" > + -command [list removeselfile $s $selfile] > } > } > } > @@ -1469,7 +1469,7 @@ > > # Show the file in an external viewer > if { [llength $showprogram] > 0} { > - eval "exec $showprogram \"$fn\" &" > + exec $showprogram $fn & > return > } > # Or make our own viewer > @@ -1569,7 +1569,7 @@ > set diffopts "-U $ctxlines $diffiflag $diffwflag $diffbflag $diffBflag > $diffdflag" > > if { [llength $diffprogram] > 0} { > - eval "exec $diffprogram \"$path1\" \"$path2\" &" > + exec $diffprogram $path1 $path2 & > return > } > # If we used an external diff program, its options are used. If we > didn't, > @@ -1750,7 +1750,7 @@ > if {$gx == $g && !$dirreadonly($k)} { > set f [lindex $dirs $k] > $mergebut.m add command -label "update $f" \ > - -command "diffmerge $i \"$f\"" > + -command [list diffmerge $i $f] > set path [joinname $f $difffile] > set diffmtime($path) [file mtime $path] > } > @@ -1770,7 +1770,7 @@ > if {$gx == $g && !$dirreadonly($k)} { > set f [lindex $dirs $k] > $mpatchbut.m add command -label "for $f" \ > - -command "diffmpatch $i \"$f\"" > + -command [list diffmpatch $i $f] > } > incr k > } > @@ -3424,7 +3424,7 @@ > $w.bar.edit.m add command -label Copy -command "tk_textCopy $w.t" > $w.bar.edit.m add command -label Paste -command "tk_textPaste $w.t" > $w.bar.edit.m add command -label Find \ > - -command "difffind :merge:$di:$fi $w.t" > + -command [list difffind :merge:$di:$fi $w.t] > pack $w.bar.edit -side left > frame $w.f -relief sunk -border 2 > entry $w.f.filename > @@ -3533,7 +3533,7 @@ > $w.bar.edit.m add command -label Copy -command "tk_textCopy $w.t" > $w.bar.edit.m add command -label Paste -command "tk_textPaste $w.t" > $w.bar.edit.m add command -label Find \ > - -command "difffind :mpatch:$fi $w.t" > + -command [list difffind :mpatch:$fi $w.t] > pack $w.bar.edit -side left > frame $w.f -relief sunk -border 2 > entry $w.f.filename > @@ -3993,7 +3993,7 @@ > $w.bar.edit.m add command -label Copy -command "tk_textCopy $w.t" > $w.bar.edit.m add command -label Paste -command "tk_textPaste $w.t" > $w.bar.edit.m add command -label Find \ > - -command "difffind :patch:$patchnum $w.t" > + -command [list difffind :patch:$patchnum $w.t] > pack $w.bar.edit -side left > frame $w.f -relief sunk -border 2 > label $w.f.l -text "Filename: " > @@ -4032,23 +4032,23 @@ > set p1 [joinname $d1 $f] > set p2 [joinname $d2 $f] > if {[file exists $p1] && [file exists $p2]} { > - set fh [open "|diff $contextopt $p1 $p2" r] > + set fh [open [list |diff $contextopt $p1 $p2] r] > } elseif {[file exists $p1] && ! [file exists $p2]} { > - set fh [open "|diff $contextopt $p1 $nullfile" r] > + set fh [open [list |diff $contextopt $p1 $nullfile] r] > } elseif {! [file exists $p1] && [file exists $p2]} { > - set fh [open "|diff $contextopt $nullfile $p2" r] > + set fh [open [list |diff $contextopt $nullfile $p2] r] > } else { > continue > } > fconfigure $fh -blocking 0 > - fileevent $fh readable "readpatch $fh $pnum $w $d1 $d2 $i \"$f\"" > + fileevent $fh readable [list readpatch $fh $pnum $w $d1 $d2 $i $f] > return > } > if {[string match ".*" $w]} { > $w.t delete "end - 1c" end > } else { > close $w > - eval "exec $showprogram \"$patch_outfile\" &" > + exec $showprogram $patch_outfile & > # Should we remove the tempfile here? We don't have it if we used > # the internal viewer > }
signature.asc
Description: Digital signature