Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Started to refactor dirdiff code |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
03d4b0355032f178b89707ad091b3893 |
User & Date: | peter 2014-07-20 23:35:46.509 |
Context
2014-07-20
| ||
23:50 | Pass dirdiff preferences as a dict check-in: 2895f46ba0 user: peter tags: trunk | |
23:35 | Started to refactor dirdiff code check-in: 03d4b03550 user: peter tags: trunk | |
2014-02-05
| ||
17:41 | Cleaned up Pref array usage to be consistent in all code. check-in: 255f3d94ce user: peter tags: trunk | |
Changes
Changes to Changes.
1 2 3 4 5 6 7 | 2014-02-01 Added a font fallback in psballon. [0ff6d72ab9] 2014-01-24 Bumped revision to 2.6.5 2014-01-24 | > > > > | 1 2 3 4 5 6 7 8 9 10 11 | 2014-08-12 Started to refactor dirdiff code. This prepares for making dirdiff revision aware. 2014-02-01 Added a font fallback in psballon. [0ff6d72ab9] 2014-01-24 Bumped revision to 2.6.5 2014-01-24 |
︙ | ︙ |
Changes to Makefile.
︙ | ︙ | |||
162 163 164 165 166 167 168 | wrap: sdx wrap eskil.kit wrapexe: @\rm -f eskil.linux eskil.exe eskil.solaris sdx wrap eskil.linux -runtime $(TCLKIT_LINUX) | | | | | 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | wrap: sdx wrap eskil.kit wrapexe: @\rm -f eskil.linux eskil.exe eskil.solaris sdx wrap eskil.linux -runtime $(TCLKIT_LINUX) # sdx wrap eskil.solaris -runtime $(TCLKIT_SOLARIS) cd eskil.vfs/lib ; ln -s $(TWAPI) twapi sdx wrap eskil.exe -runtime $(TCLKIT_WIN) rm eskil.vfs/lib/twapi release: setup wrap wrapexe @cp eskil.kit eskil`date +%Y%m%d`.kit @cp eskil.kit eskil$(VERSION).kit @gzip eskil.linux @mv eskil.linux.gz eskil$(VERSION).linux.gz # @gzip eskil.solaris # @mv eskil.solaris.gz eskil$(VERSION).solaris.gz @zip eskil$(VERSION).win.zip eskil.exe @zip eskil`date +%Y%m%d`.win.zip eskil.exe |
Changes to src/dirdiff.tcl.
︙ | ︙ | |||
142 143 144 145 146 147 148 | close $ch1 close $ch2 } } return $eq } | | > > | > > > > > > > > > > > > > > > > > > > > > > > > | | | | | | | | < > | | | | < < > > | > | | < | | | | > | | 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 | close $ch1 close $ch2 } } return $eq } # Returns the contents of a directory as a sorted list of file dicts # By collecting as much as possible in one place, this prepares for a # future expansion into revision control support in dirdiff. proc DirContentsDRaw {dir} { if {$::tcl_platform(platform) eq "windows"} { # .-files are not treated specially on windows. * is enough to get all set files [glob -directory $dir -nocomplain *] } else { set files [glob -directory $dir -nocomplain * {.[a-zA-Z]*}] } set result {} foreach file [lsort -dictionary $files] { set fD [dict create "full" $file] dict set fD tail [file tail $file] dict set fD dir [FileIsDirectory $file] if {[catch {file stat $file stat}]} { dict set fD size "" dict set fD mtime "" dict set fD type "" } else { dict set fD size $stat(size) dict set fD mtime $stat(mtime) dict set fD type $stat(type) } lappend result $fD } return $result } # Returns the contents of a directory as a sorted list of dicts, after applying # filter preferences. proc DirContentsD {dir} { set filesD [DirContentsDRaw $dir] if {$::Pref(dir,onlyrev)} { # FIXA: move to rev and make general for other systems # FIXA: obsolete, not updated since before dictinaries were used #set entries [file join $dir CVS Entries] #if {[file exists $entries]} { # set ch [open $entries r] # set data [read $ch] # close $ch # foreach line [split $data \n] { # set name [lindex [split $line /] 1] # set controlled($name) 1 # } # set files2 {} # foreach file $files { # if {[info exists controlled($file)]} { # lappend files2 $file # } # } # set files $files2 #} } set filesD2 {} foreach fileD $filesD { set full [dict get $fileD full] set tail [dict get $fileD tail] set isDir [dict get $fileD "dir"] # Apply filters if {$isDir} { if {[llength $::Pref(dir,incdirs)] == 0} { set allowed 1 } else { set allowed 0 foreach pat $::Pref(dir,incdirs) { if {[string match $pat $tail]} { set allowed 1 |
︙ | ︙ | |||
220 221 222 223 224 225 226 | set allowed 0 break } } } if {!$allowed} continue } | | | | 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 | set allowed 0 break } } } if {!$allowed} continue } lappend filesD2 $fileD } return $filesD2 } # Bring up an editor to display a file. proc EditFile {file} { locateEditor ::util(editor) exec $::util(editor) $file & } |
︙ | ︙ | |||
848 849 850 851 852 853 854 | $w.bl configure -state disabled } } # Compare two directories. method CompareDirs {dir1 dir2 node} { if {$dir1 eq ""} { | | | | | | | | > | | > | | | | 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 | $w.bl configure -state disabled } } # Compare two directories. method CompareDirs {dir1 dir2 node} { if {$dir1 eq ""} { set filesD1 {} } else { set filesD1 [DirContentsD $dir1] } if {$dir2 eq ""} { set filesD2 {} } else { set filesD2 [DirContentsD $dir2] } set len1 [llength $filesD1] set len2 [llength $filesD2] set p1 0 set p2 0 set status_change 0 set status_unknown 0 while 1 { if {$p1 < $len1 && $p2 < $len2} { set fD1 [lindex $filesD1 $p1] set df1 [dict get $fD1 full] set f1 [dict get $fD1 tail] set fD2 [lindex $filesD2 $p1] set df2 [dict get $fD2 full] set f2 [dict get $fD1 tail] set apa [FStrCmp $f1 $f2] if {$apa == 0} { # Equal names, separate them if not the same type set apa [expr {- [dict get $fD1 dir] \ + [dict get $fD2 dir]}] } switch -- $apa { 0 { set sts [$self ListFiles $df1 $df2 $node] incr p1 incr p2 |
︙ | ︙ | |||
899 900 901 902 903 904 905 | 1 { $self ListFiles "" $df2 $node incr p2 set status_change 1 } } } elseif {$p1 < $len1 && $p2 >= $len2} { | | > | > | 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 | 1 { $self ListFiles "" $df2 $node incr p2 set status_change 1 } } } elseif {$p1 < $len1 && $p2 >= $len2} { set fD1 [lindex $filesD1 $p1] set df1 [dict get $fD1 full] $self ListFiles $df1 "" $node incr p1 set status_change 1 } elseif {$p1 >= $len1 && $p2 < $len2} { set fD2 [lindex $filesD2 $p1] set df2 [dict get $fD2 full] $self ListFiles "" $df2 $node incr p2 set status_change 1 } else { break } } |
︙ | ︙ |
Changes to src/eskil.tcl.
︙ | ︙ | |||
33 34 35 36 37 38 39 | # Stop Tk from meddling with the command line by copying it first. set ::eskil(argv) $::argv set ::eskil(argc) $::argc set ::argv {} set ::argc 0 set ::eskil(debug) 0 | | | 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | # Stop Tk from meddling with the command line by copying it first. set ::eskil(argv) $::argv set ::eskil(argc) $::argc set ::argv {} set ::argc 0 set ::eskil(debug) 0 set ::eskil(diffver) "Version 2.6.5+ 2014-08-12" set ::eskil(thisScript) [file join [pwd] [info script]] namespace import tcl::mathop::+ namespace import tcl::mathop::- namespace import tcl::mathop::* namespace import tcl::mathop::/ |
︙ | ︙ |