| 
									
										
										
										
											2008-02-05 14:11:36 -05:00
										 |  |  | ! Copyright (C) 2005, 2008 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: io.backend io.nonblocking io.unix.backend io.files io | 
					
						
							| 
									
										
										
										
											2008-02-05 18:31:27 -05:00
										 |  |  | unix kernel math continuations math.bitfields byte-arrays | 
					
						
							|  |  |  | alien ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: io.unix.files | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-05 14:11:36 -05:00
										 |  |  | M: unix-io cwd | 
					
						
							| 
									
										
										
										
											2008-02-06 00:14:10 -05:00
										 |  |  |     MAXPATHLEN dup <byte-array> swap
 | 
					
						
							|  |  |  |     getcwd [ (io-error) ] unless* ;
 | 
					
						
							| 
									
										
										
										
											2008-02-05 14:11:36 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: unix-io cd | 
					
						
							|  |  |  |     chdir io-error ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-24 22:45:56 -05:00
										 |  |  | : read-flags O_RDONLY ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | : open-read ( path -- fd )
 | 
					
						
							|  |  |  |     O_RDONLY file-mode open dup io-error ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: unix-io <file-reader> ( path -- stream )
 | 
					
						
							|  |  |  |     open-read <reader> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-02 14:29:09 -05:00
										 |  |  | : write-flags { O_WRONLY O_CREAT O_TRUNC } flags ; inline
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : open-write ( path -- fd )
 | 
					
						
							|  |  |  |     write-flags file-mode open dup io-error ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: unix-io <file-writer> ( path -- stream )
 | 
					
						
							|  |  |  |     open-write <writer> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-02 14:29:09 -05:00
										 |  |  | : append-flags { O_WRONLY O_APPEND O_CREAT } flags ; inline
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : open-append ( path -- fd )
 | 
					
						
							|  |  |  |     append-flags file-mode open dup io-error | 
					
						
							|  |  |  |     [ dup 0 SEEK_END lseek io-error ] [ ] [ close ] cleanup ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: unix-io <file-appender> ( path -- stream )
 | 
					
						
							|  |  |  |     open-append <writer> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: unix-io rename-file ( from to -- )
 | 
					
						
							|  |  |  |     rename io-error ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: unix-io delete-file ( path -- )
 | 
					
						
							|  |  |  |     unlink io-error ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: unix-io make-directory ( path -- )
 | 
					
						
							|  |  |  |     OCT: 777 mkdir io-error ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: unix-io delete-directory ( path -- )
 | 
					
						
							|  |  |  |     rmdir io-error ;
 |