]> gitweb.factorcode.org Git - factor.git/blob - core/io/backend/backend.factor
07d866b56ac1079d26864cb6890700104ac0ad87
[factor.git] / core / io / backend / backend.factor
1 ! Copyright (C) 2007, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: assocs init io io.encodings io.encodings.utf8 kernel
4 namespaces system ;
5 IN: io.backend
6
7 SYMBOL: io-backend
8
9 SINGLETON: c-io-backend
10
11 io-backend [ c-io-backend ] initialize
12
13 HOOK: init-io io-backend ( -- )
14
15 HOOK: init-stdio io-backend ( -- )
16
17 : set-stdio ( input output error -- )
18     [ utf8 <decoder> input-stream set-global ]
19     [ utf8 <encoder> output-stream set-global ]
20     [ utf8 <encoder> error-stream set-global ] tri* ;
21
22 HOOK: io-multiplex io-backend ( nanos -- )
23
24 HOOK: normalize-path io-backend ( path -- path' )
25
26 : set-io-backend ( io-backend -- )
27     io-backend set-global init-io init-stdio
28     "io.files" startup-hooks get at call( -- ) ;
29
30 [ init-io embedded? [ init-stdio ] unless ]
31 "io.backend" add-startup-hook