Posted to tcl by schelte at Sat Jun 25 13:41:00 GMT 2011view pretty

proc coread {sock lenght} {
    set rc ""
    chan event $sock readable [info coroutine]
    while {[string length $rc] < $length} {
        if {[eof $sock]} {# do something}
        yield
        append rc [read $sock [expr {$lenght - [string length $rc]]
    }
    chan event $sock readable {}
    return $rc
}