tri
] with-destructors ;
-: wait-for-stdin ( stdin -- n )
+: wait-for-stdin ( stdin -- size )
[ control>> CHAR: X over io:stream-write1 io:stream-flush ]
[ size>> ssize_t heap-size swap io:stream-read *int ]
bi ;
] if ;
M: stdin refill
- [ buffer>> ] [ dup wait-for-stdin ] bi* refill-stdin f ;
+ '[
+ buffer>> _ dup wait-for-stdin refill-stdin f
+ ] with-timeout ;
+
+M: stdin cancel-operation
+ [ size>> ] [ control>> ] bi [ cancel-operation ] bi@ ;
: control-write-fd ( -- fd ) &: control_write *uint ;