1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
-
|
#! /usr/bin/env tclsh
lappend auto_path [file join installed-pkgs lib]
package require vfs::mk4
if {[llength $argv] != 2} {
puts stderr "Usage: installvfs.tcl <kitfile> <vfsdir>"
exit 1
}
set kitfile [lindex $argv 0]
set vfsdir [lindex $argv 1]
if {[catch {
package require vfs::mk4
}]} {
catch {
load "" vfs
load "" Mk4tcl
source [file join $vfsdir lib/vfs/vfsUtils.tcl]
source [file join $vfsdir lib/vfs/vfslib.tcl]
source [file join $vfsdir lib/vfs/mk4vfs.tcl]
}
}
proc copy_file {srcfile destfile} {
switch -glob -- $srcfile {
"*.tcl" {
"*.tcl" - "*.txt" {
set ifd [open $srcfile r]
set ofd [open $destfile w]
fcopy $ifd $ofd
set ret [fcopy $ifd $ofd]
close $ofd
close $ifd
}
default {
file copy -- $srcfile $destfile
}
}
puts "Copied $srcfile to $destfile"
}
proc recursive_copy {srcdir destdir} {
foreach file [glob -nocomplain -directory $srcdir *] {
set filetail [file tail $file]
set destfile [file join $destdir $filetail]
|
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
56
57
58
59
60
61
62
63
64
65
66
67
|
-
-
-
-
+
-
+
|
copy_file $file $destfile
} err]} {
puts stderr "Failed to copy: $file: $err"
}
}
}
set kitfile [lindex $argv 0]
set vfsdir [lindex $argv 1]
set handle [vfs::mk4::Mount $kitfile /kit]
set handle [vfs::mk4::Mount $kitfile /kit -nocommit]
recursive_copy $vfsdir /kit
vfs::mk4::Unmount $handle /kit
vfs::unmount /kit
|