[pmarin]. ReadChar is an implementation of the classic getc and putbak functions. <
> For more info see the page 255 of Software Tools by Kernighan and Plauger. <
> The code is part of [Muddy Scheme] ---- ====== package require TclOO package require struct::stack oo::class create ReadChar { constructor {{chan stdin}} { my variable ch my variable buf set ch $chan set buf [struct::stack] } method getc {} { my variable ch my variable buf if {[$buf size]} { return [$buf pop] } else { if {![eof $ch]} { return [read $ch 1] } else { return "eof" } } } method eof {} { my variable ch my variable buf if { ![$buf size] && [eof $ch] } { return 1 } else { return 0 } } method peek {} { my variable ch my variable buf if {[$buf size]} { return [$buf peek] } else { if {![eof $ch]} { set c [read $ch 1] $buf push $c return $c } else { return "eof" } } } method putbak str { my variable buf if { [string length $str] > 0 } { if { [string length $str] == 1 } { $buf push $str } else { foreach i [split [string reverse $str] {}] { $buf push $i } } } } destructor { my variable ch my variable buf $buf destroy close $ch } } ====== ---- **Coments** It is rare that It is not already implemented in the core libraries... Am I missing something? DCP: Never ever needed to read or write a single char in Tcl in the last 10-15 years! <
> [pmarin] Even the C Standartd Library comes whith getc and ungetc (stdio.h)!