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
|
}
set keepNewline 0
set index [lsearch -exact $args -keepNewline]
if {$index != -1} {
set keepNewline 1
set args [lreplace $args $index $index]
}
foreach a $args {
lappend cmd $a
}
protOut $cmd
flush stdout
if {[string length $answer] > 0} {
protOut $answer
set prompt_file [file join $::tempPath fossil_prompt_answer]
write_file $prompt_file $answer\n
if {$keepNewline} {
set rc [catch {eval exec -keepnewline $cmd <$prompt_file} result]
} else {
set rc [catch {eval exec $cmd <$prompt_file} result]
}
file delete $prompt_file
} else {
if {$keepNewline} {
set rc [catch {eval exec -keepnewline $cmd} result]
} else {
set rc [catch {eval exec $cmd} result]
}
}
global RESULT CODE
set CODE $rc
if {($rc && !$expectError) || (!$rc && $expectError)} {
protOut "ERROR: $result" 1
} elseif {$::VERBOSE} {
protOut "RESULT: $result"
}
set RESULT $result
}
# Read a file into memory.
#
proc read_file {filename} {
|
>
>
>
>
>
>
>
>
>
>
|
|
|
|
>
|
|
<
|
<
|
|
>
|
|
<
|
>
>
>
>
>
>
>
>
|
|
|
|
>
|
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
219
220
221
222
223
224
225
226
227
228
|
}
set keepNewline 0
set index [lsearch -exact $args -keepNewline]
if {$index != -1} {
set keepNewline 1
set args [lreplace $args $index $index]
}
set whatIf 0
set index [lsearch -exact $args -whatIf]
if {$index != -1} {
set whatIf 1
set args [lreplace $args $index $index]
}
foreach a $args {
lappend cmd $a
}
protOut $cmd
flush stdout
if {$whatIf} {
protOut [pwd]; protOut $answer
set result WHAT-IF-MODE; set rc 42
} else {
if {[string length $answer] > 0} {
protOut $answer
set prompt_file [file join $::tempPath fossil_prompt_answer]
write_file $prompt_file $answer\n
set execCmd [list eval exec]
if {$keepNewline} {lappend execCmd -keepnewline}
lappend execCmd $cmd <$prompt_file
set rc [catch $execCmd result]
file delete $prompt_file
} else {
set execCmd [list eval exec]
if {$keepNewline} {lappend execCmd -keepnewline}
lappend execCmd $cmd
set rc [catch $execCmd result]
}
}
set ab(str) {child process exited abnormally}
set ab(len) [string length $ab(str)]
set ab(off) [expr {$ab(len) - 1}]
if {$rc && $expectError && \
[string range $result end-$ab(off) end] eq $ab(str)} {
set result [string range $result 0 end-$ab(len)]
}
global RESULT CODE
set CODE $rc
if {!$whatIf} {
if {($rc && !$expectError) || (!$rc && $expectError)} {
protOut "ERROR ($rc): $result" 1
} elseif {$::VERBOSE} {
protOut "RESULT ($rc): $result"
}
}
set RESULT $result
}
# Read a file into memory.
#
proc read_file {filename} {
|