1 diff -uNr sdx.vfs/lib/app-sdx/sync.tcl sdx-1nrl.vfs/lib/app-sdx/sync.tcl 2 --- sdx.vfs/lib/app-sdx/sync.tcl 2007-03-29 09:40:28.000000000 -0400 3 +++ sdx-1nrl.vfs/lib/app-sdx/sync.tcl 2008-07-18 18:27:48.000000000 -0400 4 @@ -5,6 +5,8 @@ 5 # 6 # Recursively sync two directory structures 7 # 8 +package require mk4vfs 9 + 10 proc rsync {arr src dest} { 11 #tclLog "rsync $src $dest" 12 upvar 1 $arr opts 13 @@ -12,18 +14,35 @@ 14 if {$opts(-auto)} { 15 # Auto-mounter 16 vfs::auto $src -readonly 17 - vfs::auto $dest 18 + if {$opts(-forcedest)} { 19 + if {[file exists $dest]} { 20 + if {[file type $dest] != "directory"} { 21 + set vfs_mountid [vfs::mk4::Mount $dest $dest] 22 + } 23 + } 24 + } else { 25 + vfs::auto $dest 26 + } 27 } 28 29 if {![file exists $src]} { 30 + if {[info exists vfs_mountid]} { 31 + vfs::mk4::Unmount $vfs_mountid $dest 32 + } 33 return -code error "source \"$src\" does not exist" 34 } 35 if {[file isfile $src]} { 36 #tclLog "copying file $src to $dest" 37 + if {[info exists vfs_mountid]} { 38 + vfs::mk4::Unmount $vfs_mountid $dest 39 + } 40 return [rcopy opts $src $dest] 41 } 42 if {![file isdirectory $dest]} { 43 #tclLog "copying non-file $src to $dest" 44 + if {[info exists vfs_mountid]} { 45 + vfs::mk4::Unmount $vfs_mountid $dest 46 + } 47 return [rcopy opts $src $dest] 48 } 49 set contents {} 50 @@ -74,6 +93,9 @@ 51 # Handle stray files 52 # 53 if {$opts(-prune) == 0} { 54 + if {[info exists vfs_mountid]} { 55 + vfs::mk4::Unmount $vfs_mountid $dest 56 + } 57 return $count 58 } 59 set contents {} 60 @@ -90,6 +112,9 @@ 61 rdelete opts $file 62 incr count 63 } 64 + if {[info exists vfs_mountid]} { 65 + vfs::mk4::Unmount $vfs_mountid $dest 66 + } 67 return $count 68 } 69 proc _rsync {arr args} { 70 @@ -237,6 +262,7 @@ 71 -auto 1 72 -noerror 1 73 -text 0 74 + -forcedest 0 75 } 76 # 2005-08-30 only ignore the CVS subdir 77 # 2007-03-29 added .svn as well 78 @@ -248,6 +274,7 @@ 79 Where options are:- 80 81 -auto 0|1 Auto-mount starkits (default: $opts(-auto)) 82 + -forcedest 0|1 Force mounting of dest (default: $opts(-forcedest)) 83 -compress 0|1 Enable MetaKit compression (default: $opts(-compress)) 84 -mtime n Acceptable difference in mtimes (default: $opts(-mtime)) 85 -prune 0|1 Remove extra files in dest (default: $opts(-prune)) 86 diff -uNr sdx.vfs/lib/app-sdx/wrap.tcl sdx-1nrl.vfs/lib/app-sdx/wrap.tcl 87 --- sdx.vfs/lib/app-sdx/wrap.tcl 2008-02-24 14:23:35.000000000 -0500 88 +++ sdx-1nrl.vfs/lib/app-sdx/wrap.tcl 2009-02-09 00:08:21.444422513 -0500 89 @@ -50,7 +50,7 @@ 90 return $result 91 } 92 93 -proc LoadHeader {filename} { 94 +proc LoadHeader {filename {isWin32 0}} { 95 if {[file normalize $filename] == [info nameofexe]} { 96 puts stderr "file in use, cannot be prefix: [file normalize $filename]" 97 exit 1 98 @@ -60,7 +60,7 @@ 99 package require vfs::mk4 100 vfs::mk4::Mount $filename hdr -readonly 101 # we only look for an icon if the runtime is called *.exe (!) 102 - if {[string tolower [file extension $filename]] == ".exe"} { 103 + if {$isWin32} { 104 catch { set ::origicon [readfile hdr/tclkit.ico] } 105 } 106 } 107 @@ -89,6 +89,7 @@ 108 set type mk4 109 set explist {} 110 set syncopts {} 111 +set pfileIsWin32 0 112 113 set a [lindex $argv 1] 114 while {[string match -* $a]} { 115 @@ -99,10 +100,21 @@ 116 } 117 -runtime { 118 set pfile [lindex $argv 2] 119 + 120 + # Determine if runtime file is a Win32 runtime or not 121 + set fd [open $pfile r] 122 + fconfigure $fd -encoding binary -translation binary 123 + set chk [read $fd 3] 124 + if {$chk == "MZ\220"} { 125 + set pfileIsWin32 1 126 + } 127 + close $fd 128 + unset fd chk 129 + 130 if {$pfile == $out} { 131 set reusefile 1 132 } else { 133 - set header [LoadHeader $pfile] 134 + set header [LoadHeader $pfile $pfileIsWin32] 135 } 136 set argv [lreplace $argv 1 2] 137 set prefix 1 138 @@ -219,7 +231,7 @@ 139 140 # 2005-03-15 added AF's code to customize version/description strings in exe's 141 if {[info exists pfile] && 142 - [string tolower [file extension $pfile]] == ".exe" && 143 + $pfileIsWin32 && 144 [file exists [file join $idir tclkit.inf]]} { 145 puts " customizing strings in executable" 146 package require stringfileinfo |