33 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								USING: alien alien.c-types combinators io io.backend io.buffers
							 | 
						||
| 
								 | 
							
								io.files io.ports io.windows kernel libc math namespaces
							 | 
						||
| 
								 | 
							
								prettyprint sequences strings threads threads.private
							 | 
						||
| 
								 | 
							
								windows windows.kernel32 io.windows.ce.backend system ;
							 | 
						||
| 
								 | 
							
								IN: windows.ce.files
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! M: wince normalize-path ( string -- string )
							 | 
						||
| 
								 | 
							
								    ! dup 1 tail* CHAR: \\ = [ "*" append ] [ "\\*" append ] if ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M: wince CreateFile-flags ( DWORD -- DWORD )
							 | 
						||
| 
								 | 
							
								    FILE_ATTRIBUTE_NORMAL bitor ;
							 | 
						||
| 
								 | 
							
								M: wince FileArgs-overlapped ( port -- f ) drop f ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: finish-read ( port status bytes-ret -- )
							 | 
						||
| 
								 | 
							
								    swap [ drop port-errored ] [ swap n>buffer ] if ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M: win32-file wince-read
							 | 
						||
| 
								 | 
							
								    drop
							 | 
						||
| 
								 | 
							
								    dup make-FileArgs dup setup-read ReadFile zero?
							 | 
						||
| 
								 | 
							
								    swap FileArgs-lpNumberOfBytesRet *uint dup zero? [
							 | 
						||
| 
								 | 
							
								        2drop t swap set-port-eof?
							 | 
						||
| 
								 | 
							
								    ] [
							 | 
						||
| 
								 | 
							
								        finish-read
							 | 
						||
| 
								 | 
							
								    ] if ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M: win32-file wince-write ( port port-handle -- )
							 | 
						||
| 
								 | 
							
								    drop dup make-FileArgs dup setup-write WriteFile zero? [
							 | 
						||
| 
								 | 
							
								        drop port-errored
							 | 
						||
| 
								 | 
							
								    ] [
							 | 
						||
| 
								 | 
							
								        FileArgs-lpNumberOfBytesRet *uint
							 | 
						||
| 
								 | 
							
								        swap buffer-consume
							 | 
						||
| 
								 | 
							
								    ] if ;
							 |