Given a filename, returns 1 if the file is binary, 0 if text. A pastiche of the work of many, culled from a thread in comp.lang.tcl
proc isBinary { filename } { if { [ catch { set bin_rx {[\x00-\x08\x0b\x0e-\x1f]} set fid [ ::open $filename r ] fconfigure $fid -translation binary fconfigure $fid -buffersize 1024 fconfigure $fid -buffering full set test [ read $fid 1024 ] ::close $fid if { [ regexp $bin_rx $test ] } { set bool 1 } else { set bool 0 } } err ] } { catch { ::close $fid } return -code error "isBinary: $err" } return $bool }