- set pck [split $buf_rdi "\0"]
- set buf_rdi [lindex $pck end]
- foreach {m p} [lrange $pck 0 end-1] {
- if {$m != {} && $p != {}} {
- display_file $p [string index $m end]_
- }
+ set c 0
+ set n [string length $buf_rdi]
+ while {$c < $n} {
+ set z1 [string first "\0" $buf_rdi $c]
+ if {$z1 == -1} break
+ incr z1
+ set z2 [string first "\0" $buf_rdi $z1]
+ if {$z2 == -1} break
+
+ set c $z2
+ incr z2 -1
+ display_file \
+ [string range $buf_rdi $z1 $z2] \
+ [string index $buf_rdi [expr $z1 - 2]]_
+ incr c
+ }
+ if {$c < $n} {
+ set buf_rdi [string range $buf_rdi $c end]
+ } else {
+ set buf_rdi {}