Check-in [d8e00cd4a3]
Overview
Comment:Support adding additional output files from callbacks
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: d8e00cd4a357f3c7ad346ec7be900ec702ca16f2a25f79334040e8674e433b99
User & Date: rkeene on 2019-09-20 16:18:38
Other Links: manifest | tags
Context
2019-09-20
16:39
Cleanup to callbacks check-in: e592c85e70 user: rkeene tags: trunk
16:18
Support adding additional output files from callbacks check-in: d8e00cd4a3 user: rkeene tags: trunk
16:11
Also give the callback the bare file name check-in: ed3da129b8 user: rkeene tags: trunk
Changes

Modified lib/xvfs/xvfs.tcl from [d7189b3c0d] to [5164175ffc].

95
96
97
98
99
100
101



102
103
104





105
106
107
108
109
110
111
112
113
114
95
96
97
98
99
100
101
102
103
104



105
106
107
108
109
110
111

112
113
114
115
116
117
118







+
+
+
-
-
-
+
+
+
+
+


-








proc ::xvfs::processFile {fsName inputFile outputFile fileInfoDict} {
	array set fileInfo $fileInfoDict

	switch -exact -- $fileInfo(type) {
		"file" {
			set type "XVFS_FILE_TYPE_REG"
			if {[info exists fileInfo(fileContents)]} {
				set data $fileInfo(fileContents)
			} else {
			set fd [open $inputFile]
			fconfigure $fd -encoding binary -translation binary -blocking true
			set data [read $fd]
				set fd [open $inputFile]
				fconfigure $fd -encoding binary -translation binary -blocking true
				set data [read $fd]
				close $fd
			}
			set size [string length $data]
			set data [string trimleft [binaryToCHex $data "\t\t\t"]]
			close $fd
		}
		"directory" {
			set type "XVFS_FILE_TYPE_DIR"
			set children $fileInfo(children)
			set size [llength $children]
			
			if {$size == 0} {
201
202
203
204
205
206
207




208
209
210
211
212
213
214
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222







+
+
+
+







	file stat $inputFile fileInfo
	set fileInfo(children) $children

	processFile $fsName $inputFile $outputFile [array get fileInfo]
	lappend outputFiles $outputFile

	if {$isTopLevel} {
		if {[info command ::xvfs::callback::addOutputFiles] ne ""} {
			lappend outputFiles {*}[::xvfs::callback::addOutputFiles]
		}

		::xvfs::_emitLine "\};"
	}

	return $outputFiles
}

proc ::xvfs::main {argv} {