| 
									
										
										
										
											2009-01-27 01:03:34 -05:00
										 |  |  | ! Copyright (C) 2007, 2009 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-03-27 18:12:39 -04:00
										 |  |  | USING: init kernel system namespaces io io.encodings | 
					
						
							| 
									
										
										
										
											2009-01-29 19:33:19 -05:00
										 |  |  | io.encodings.utf8 init assocs splitting alien io.streams.null ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: io.backend | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SYMBOL: io-backend | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-02 04:38:36 -04:00
										 |  |  | SINGLETON: c-io-backend | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-10 17:16:12 -05:00
										 |  |  | io-backend [ c-io-backend ] initialize
 | 
					
						
							| 
									
										
										
										
											2008-10-02 04:38:36 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | HOOK: init-io io-backend ( -- )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-29 19:33:19 -05:00
										 |  |  | HOOK: (init-stdio) io-backend ( -- stdin stdout stderr ? )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : set-stdio ( input-handle output-handle error-handle -- )
 | 
					
						
							|  |  |  |     [ input-stream set-global ] | 
					
						
							|  |  |  |     [ output-stream set-global ] | 
					
						
							|  |  |  |     [ error-stream set-global ] tri* ;
 | 
					
						
							| 
									
										
										
										
											2008-02-24 02:37:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | : init-stdio ( -- )
 | 
					
						
							| 
									
										
										
										
											2009-01-29 19:33:19 -05:00
										 |  |  |     (init-stdio) [ | 
					
						
							|  |  |  |         [ utf8 <decoder> ] | 
					
						
							|  |  |  |         [ utf8 <encoder> ] | 
					
						
							|  |  |  |         [ utf8 <encoder> ] tri*
 | 
					
						
							|  |  |  |     ] [ | 
					
						
							|  |  |  |         3drop
 | 
					
						
							|  |  |  |         null-reader null-writer null-writer | 
					
						
							|  |  |  |     ] if set-stdio ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-24 01:51:46 -05:00
										 |  |  | HOOK: io-multiplex io-backend ( us -- )
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | HOOK: normalize-directory io-backend ( str -- newstr )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-01 20:51:49 -04:00
										 |  |  | HOOK: normalize-path io-backend ( str -- newstr )
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-01 20:51:49 -04:00
										 |  |  | M: object normalize-directory normalize-path ;
 | 
					
						
							| 
									
										
										
										
											2008-03-26 23:47:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-24 20:58:34 -05:00
										 |  |  | : set-io-backend ( io-backend -- )
 | 
					
						
							| 
									
										
										
										
											2008-03-27 18:12:39 -04:00
										 |  |  |     io-backend set-global init-io init-stdio | 
					
						
							| 
									
										
										
										
											2009-03-17 03:19:50 -04:00
										 |  |  |     "io.files" init-hooks get at call( -- ) ;
 | 
					
						
							| 
									
										
										
										
											2008-02-18 06:07:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 20:48:17 -05:00
										 |  |  | ! Note that we have 'alien' in our using list so that the alien | 
					
						
							|  |  |  | ! init hook runs before this one. | 
					
						
							| 
									
										
										
										
											2008-02-18 06:07:40 -05:00
										 |  |  | [ init-io embedded? [ init-stdio ] unless ] | 
					
						
							|  |  |  | "io.backend" add-init-hook |