Posted to tcl by msiism at Wed Jan 27 13:05:38 GMT 2021view pretty
#!/usr/bin/env tclsh
set find_done 0
set find_path $env(HOME)
proc _pipe_chunk {ichan} {
global find_done
set chunk {}
# Read a single character from $ichan.
# See whether it's NUL.
# If not, append it to $chunk.
# Return $chunk when it's complete (NUL encountered).
# Handle occurrence of EOF while doing this.
while {true} {
set char [read $ichan 1]
if {[eof $ichan]} {
close $ichan
set find_done 1
break
} elseif {$char == "\0"} {
puts $chunk
break
} else {
set chunk ${chunk}${char}
}
}
}
set find_out [open "| find $find_path -type f -print0" r]
chan event $find_out readable [list _pipe_chunk $find_out]
#chan configure $find_out -buffering line
vwait $find_done
Comments
Posted by msiism at Wed Jan 27 13:36:26 GMT 2021 [text] [code]
s/vwait $find_done/vwait find_done