Remove unmaintained/io/ since basis/io/ now has all of the features from the old I/O library
parent
d6264a32ce
commit
825ad4e59d
|
@ -1,24 +0,0 @@
|
||||||
USING: kernel ;
|
|
||||||
|
|
||||||
REQUIRES: libs/calendar libs/shuffle ;
|
|
||||||
|
|
||||||
PROVIDE: libs/io
|
|
||||||
{ +files+ {
|
|
||||||
"io.factor"
|
|
||||||
"mmap.factor"
|
|
||||||
"shell.factor"
|
|
||||||
{ "os-unix.factor" [ unix? ] }
|
|
||||||
{ "os-unix-shell.factor" [ unix? ] }
|
|
||||||
{ "mmap-os-unix.factor" [ unix? ] }
|
|
||||||
|
|
||||||
{ "os-winnt.factor" [ winnt? ] }
|
|
||||||
{ "os-winnt-shell.factor" [ winnt? ] }
|
|
||||||
{ "mmap-os-winnt.factor" [ winnt? ] }
|
|
||||||
|
|
||||||
{ "os-wince.factor" [ wince? ] }
|
|
||||||
} }
|
|
||||||
{ +tests+ {
|
|
||||||
"test/io.factor"
|
|
||||||
"test/mmap.factor"
|
|
||||||
} } ;
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
USING: arrays kernel libs-io sequences prettyprint unix-internals
|
|
||||||
calendar namespaces math ;
|
|
||||||
USE: io
|
|
||||||
IN: shell
|
|
||||||
|
|
||||||
TUPLE: unix-shell ;
|
|
||||||
|
|
||||||
T{ unix-shell } \ shell set-global
|
|
||||||
|
|
||||||
TUPLE: file name mode nlink uid gid size mtime symbol ;
|
|
||||||
|
|
||||||
M: unix-shell directory* ( path -- seq )
|
|
||||||
dup (directory) [ tuck >r "/" r> 3append stat* 2array ] map-with ;
|
|
||||||
|
|
||||||
M: unix-shell make-file ( path -- file )
|
|
||||||
first2
|
|
||||||
[ stat-mode ] keep
|
|
||||||
[ stat-nlink ] keep
|
|
||||||
[ stat-uid ] keep
|
|
||||||
[ stat-gid ] keep
|
|
||||||
[ stat-size ] keep
|
|
||||||
[ stat-mtime timespec>timestamp >local-time ] keep
|
|
||||||
stat-mode mode>symbol <file> ;
|
|
||||||
|
|
||||||
M: unix-shell file. ( file -- )
|
|
||||||
[ [ file-mode >oct write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ [ file-nlink unparse write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ [ file-uid unparse write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ [ file-gid unparse write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ [ file-size unparse write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ [ file-mtime file-time-string write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ file-name write ] with-cell ;
|
|
||||||
|
|
||||||
USE: unix-internals
|
|
||||||
M: unix-shell touch-file ( path -- )
|
|
||||||
dup open-append dup -1 = [
|
|
||||||
drop now dup set-file-times
|
|
||||||
] [
|
|
||||||
nip [ now dup set-file-times* ] keep close
|
|
||||||
] if ;
|
|
|
@ -1,24 +0,0 @@
|
||||||
! Copyright (C) 2007 Doug Coleman.
|
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
|
||||||
USING: alien arrays calendar errors io io-internals kernel
|
|
||||||
math nonblocking-io sequences unix-internals unix-io ;
|
|
||||||
IN: libs-io
|
|
||||||
|
|
||||||
: O_APPEND HEX: 100 ; inline
|
|
||||||
: O_EXCL HEX: 800 ; inline
|
|
||||||
: SEEK_SET 0 ; inline
|
|
||||||
: SEEK_CUR 1 ; inline
|
|
||||||
: SEEK_END 2 ; inline
|
|
||||||
: EEXIST 17 ; inline
|
|
||||||
|
|
||||||
: mode>symbol ( mode -- ch )
|
|
||||||
S_IFMT bitand
|
|
||||||
{
|
|
||||||
{ [ dup S_IFDIR = ] [ drop "/" ] }
|
|
||||||
{ [ dup S_IFIFO = ] [ drop "|" ] }
|
|
||||||
{ [ dup S_IXUSR = ] [ drop "*" ] }
|
|
||||||
{ [ dup S_IFLNK = ] [ drop "@" ] }
|
|
||||||
{ [ dup S_IFWHT = ] [ drop "%" ] }
|
|
||||||
{ [ dup S_IFSOCK = ] [ drop "=" ] }
|
|
||||||
{ [ t ] [ drop "" ] }
|
|
||||||
} cond ;
|
|
|
@ -1,55 +0,0 @@
|
||||||
USING: alien calendar io io-internals kernel libs-io math
|
|
||||||
namespaces prettyprint sequences windows-api ;
|
|
||||||
IN: shell
|
|
||||||
|
|
||||||
TUPLE: winnt-shell ;
|
|
||||||
|
|
||||||
T{ winnt-shell } \ shell set-global
|
|
||||||
|
|
||||||
TUPLE: file name size mtime attributes ;
|
|
||||||
|
|
||||||
: ((directory*)) ( handle -- )
|
|
||||||
"WIN32_FIND_DATA" <c-object> [ FindNextFile ] 2keep
|
|
||||||
rot zero? [ 2drop ] [ , ((directory*)) ] if ;
|
|
||||||
|
|
||||||
: (directory*) ( path -- )
|
|
||||||
"WIN32_FIND_DATA" <c-object> [
|
|
||||||
FindFirstFile dup INVALID_HANDLE_VALUE = [
|
|
||||||
win32-error
|
|
||||||
] when
|
|
||||||
] keep ,
|
|
||||||
[ ((directory*)) ] keep FindClose win32-error=0/f ;
|
|
||||||
|
|
||||||
: append-star ( path -- path )
|
|
||||||
dup peek CHAR: \\ = "*" "\\*" ? append ;
|
|
||||||
|
|
||||||
M: winnt-shell directory* ( path -- seq )
|
|
||||||
normalize-pathname append-star [ (directory*) ] { } make ;
|
|
||||||
|
|
||||||
: WIN32_FIND_DATA>file-size ( WIN32_FILE_ATTRIBUTE_DATA -- n )
|
|
||||||
[ WIN32_FIND_DATA-nFileSizeLow ] keep
|
|
||||||
WIN32_FIND_DATA-nFileSizeHigh 32 shift + ;
|
|
||||||
|
|
||||||
M: winnt-shell make-file ( WIN32_FIND_DATA -- file )
|
|
||||||
[ WIN32_FIND_DATA-cFileName alien>u16-string ] keep
|
|
||||||
[ WIN32_FIND_DATA>file-size ] keep
|
|
||||||
[
|
|
||||||
WIN32_FIND_DATA-ftCreationTime
|
|
||||||
FILETIME>timestamp >local-time
|
|
||||||
] keep
|
|
||||||
WIN32_FIND_DATA-dwFileAttributes <file> ;
|
|
||||||
|
|
||||||
M: winnt-shell file. ( file -- )
|
|
||||||
[ [ file-attributes >oct write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ [ file-size unparse write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ [ file-mtime file-time-string write ] keep ] with-cell
|
|
||||||
[ bl ] with-cell
|
|
||||||
[ file-name write ] with-cell ;
|
|
||||||
|
|
||||||
M: winnt-shell touch-file ( path -- )
|
|
||||||
#! Set the file write time to 'now'
|
|
||||||
normalize-pathname
|
|
||||||
dup maybe-create-file [ drop ] [ now set-file-write-time ] if ;
|
|
||||||
|
|
|
@ -1,96 +0,0 @@
|
||||||
USING: alien calendar errors generic io io-internals kernel
|
|
||||||
math namespaces nonblocking-io parser quotations sequences
|
|
||||||
shuffle windows-api words ;
|
|
||||||
IN: libs-io
|
|
||||||
|
|
||||||
: stat* ( path -- WIN32_FIND_DATA )
|
|
||||||
"WIN32_FIND_DATA" <c-object>
|
|
||||||
[
|
|
||||||
FindFirstFile
|
|
||||||
[ INVALID_HANDLE_VALUE = [ win32-error ] when ] keep
|
|
||||||
FindClose win32-error=0/f
|
|
||||||
] keep ;
|
|
||||||
|
|
||||||
: set-file-time ( path timestamp/f timestamp/f timestamp/f -- )
|
|
||||||
#! timestamp order: creation access write
|
|
||||||
>r >r >r open-existing dup r> r> r>
|
|
||||||
[ timestamp>FILETIME ] 3 napply
|
|
||||||
SetFileTime win32-error=0/f
|
|
||||||
close-handle ;
|
|
||||||
|
|
||||||
: set-file-times ( path timestamp/f timestamp/f -- )
|
|
||||||
f -rot set-file-time ;
|
|
||||||
|
|
||||||
: set-file-create-time ( path timestamp -- )
|
|
||||||
f f set-file-time ;
|
|
||||||
|
|
||||||
: set-file-access-time ( path timestamp -- )
|
|
||||||
>r f r> f set-file-time ;
|
|
||||||
|
|
||||||
: set-file-write-time ( path timestamp -- )
|
|
||||||
>r f f r> set-file-time ;
|
|
||||||
|
|
||||||
: maybe-make-filetime ( ? -- FILETIME/f )
|
|
||||||
[ "FILETIME" <c-object> ] [ f ] if ;
|
|
||||||
|
|
||||||
: file-time ( path ? ? ? -- FILETIME/f FILETIME/f FILETIME/f )
|
|
||||||
>r >r >r open-existing dup r> r> r>
|
|
||||||
[ maybe-make-filetime ] 3 napply
|
|
||||||
[ GetFileTime win32-error=0/f close-handle ] 3keep ;
|
|
||||||
|
|
||||||
: file-times ( path -- FILETIME FILETIME FILETIME )
|
|
||||||
t t t file-time [ FILETIME>timestamp ] 3 napply ;
|
|
||||||
|
|
||||||
: file-create-time ( path -- FILETIME )
|
|
||||||
t f f file-time 2drop FILETIME>timestamp ;
|
|
||||||
|
|
||||||
: file-access-time ( path -- FILETIME )
|
|
||||||
f t f file-time drop nip FILETIME>timestamp ;
|
|
||||||
|
|
||||||
: file-write-time ( path -- FILETIME )
|
|
||||||
f f t file-time 2nip FILETIME>timestamp ;
|
|
||||||
|
|
||||||
: attrib ( path -- n )
|
|
||||||
[ stat* WIN32_FIND_DATA-dwFileAttributes ] catch
|
|
||||||
[ drop 0 ] when ;
|
|
||||||
|
|
||||||
: (read-only?) ( mode -- ? )
|
|
||||||
FILE_ATTRIBUTE_READONLY bit-set? ;
|
|
||||||
|
|
||||||
: read-only? ( path -- ? )
|
|
||||||
attrib (read-only?) ;
|
|
||||||
|
|
||||||
: (hidden?) ( mode -- ? )
|
|
||||||
FILE_ATTRIBUTE_HIDDEN bit-set? ;
|
|
||||||
|
|
||||||
: hidden? ( path -- ? )
|
|
||||||
attrib (hidden?) ;
|
|
||||||
|
|
||||||
: (system?) ( mode -- ? )
|
|
||||||
FILE_ATTRIBUTE_SYSTEM bit-set? ;
|
|
||||||
|
|
||||||
: system? ( path -- ? )
|
|
||||||
attrib (system?) ;
|
|
||||||
|
|
||||||
: (directory?) ( mode -- ? )
|
|
||||||
FILE_ATTRIBUTE_DIRECTORY bit-set? ;
|
|
||||||
|
|
||||||
: directory? ( path -- ? )
|
|
||||||
attrib (directory?) ;
|
|
||||||
|
|
||||||
: (archive?) ( mode -- ? )
|
|
||||||
FILE_ATTRIBUTE_ARCHIVE bit-set? ;
|
|
||||||
|
|
||||||
: archive? ( path -- ? )
|
|
||||||
attrib (archive?) ;
|
|
||||||
|
|
||||||
! FILE_ATTRIBUTE_DEVICE
|
|
||||||
! FILE_ATTRIBUTE_NORMAL
|
|
||||||
! FILE_ATTRIBUTE_TEMPORARY
|
|
||||||
! FILE_ATTRIBUTE_SPARSE_FILE
|
|
||||||
! FILE_ATTRIBUTE_REPARSE_POINT
|
|
||||||
! FILE_ATTRIBUTE_COMPRESSED
|
|
||||||
! FILE_ATTRIBUTE_OFFLINE
|
|
||||||
! FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
|
|
||||||
! FILE_ATTRIBUTE_ENCRYPTED
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
USING: calendar io io-internals kernel math namespaces
|
|
||||||
nonblocking-io prettyprint quotations sequences ;
|
|
||||||
IN: shell
|
|
||||||
|
|
||||||
SYMBOL: shell
|
|
||||||
HOOK: directory* shell ( path -- seq )
|
|
||||||
HOOK: make-file shell ( bytes -- file )
|
|
||||||
HOOK: file. shell ( file -- )
|
|
||||||
HOOK: touch-file shell ( path -- )
|
|
||||||
|
|
||||||
: (ls) ( path -- )
|
|
||||||
>r H{ } r> directory*
|
|
||||||
[
|
|
||||||
[ [ make-file file. ] with-row ] each
|
|
||||||
] curry tabular-output ;
|
|
||||||
|
|
||||||
: ls ( -- )
|
|
||||||
cwd (ls) ;
|
|
||||||
|
|
||||||
: pwd ( -- )
|
|
||||||
cwd pprint nl ;
|
|
||||||
|
|
||||||
: (slurp) ( quot -- )
|
|
||||||
>r default-buffer-size read r> over [
|
|
||||||
dup slip (slurp)
|
|
||||||
] [
|
|
||||||
2drop
|
|
||||||
] if ;
|
|
||||||
|
|
||||||
: slurp ( stream quot -- )
|
|
||||||
[ (slurp) ] curry with-stream ;
|
|
||||||
|
|
||||||
: cat ( path -- )
|
|
||||||
<file-reader> stdio get
|
|
||||||
duplex-stream-out <duplex-stream>
|
|
||||||
[ write ] slurp ;
|
|
||||||
|
|
||||||
: copy-file ( path path -- )
|
|
||||||
>r <file-reader> r>
|
|
||||||
<file-writer> <duplex-stream> [ write ] slurp ;
|
|
|
@ -1,42 +0,0 @@
|
||||||
USING: calendar errors io kernel libs-io math namespaces sequences
|
|
||||||
shell test ;
|
|
||||||
IN: temporary
|
|
||||||
|
|
||||||
SYMBOL: file "file-appender-test.txt" \ file set
|
|
||||||
[ \ file get delete-file ] catch drop
|
|
||||||
[ f ] [ \ file get exists? ] unit-test
|
|
||||||
\ file get <file-appender> [ "asdf" write ] with-stream
|
|
||||||
[ t ] [ \ file get exists? ] unit-test
|
|
||||||
[ 4 ] [ \ file get file-length ] unit-test
|
|
||||||
\ file get <file-appender> [ "jkl;" write ] with-stream
|
|
||||||
[ t ] [ \ file get exists? ] unit-test
|
|
||||||
[ 8 ] [ \ file get file-length ] unit-test
|
|
||||||
[ "asdfjkl;" ] [ \ file get <file-reader> contents ] unit-test
|
|
||||||
\ file get delete-file
|
|
||||||
[ f ] [ \ file get exists? ] unit-test
|
|
||||||
|
|
||||||
SYMBOL: directory "test-directory" \ directory set
|
|
||||||
\ directory get create-directory
|
|
||||||
[ t ] [ \ directory get directory? ] unit-test
|
|
||||||
\ directory get delete-directory
|
|
||||||
[ f ] [ \ directory get directory? ] unit-test
|
|
||||||
|
|
||||||
SYMBOL: time "time-test.txt" \ time set
|
|
||||||
[ \ time get delete-file ] catch drop
|
|
||||||
\ time get touch-file
|
|
||||||
[ 0 ] [ \ time get file-length ] unit-test
|
|
||||||
[ t ] [ \ time get exists? ] unit-test
|
|
||||||
\ time get 0 unix-time>timestamp dup set-file-times
|
|
||||||
[ t ] [ \ time get file-write-time 0 unix-time>timestamp = ] unit-test
|
|
||||||
[ t ] [ \ time get file-access-time 0 unix-time>timestamp = ] unit-test
|
|
||||||
\ time get touch-file
|
|
||||||
[ t ] [ now \ time get file-write-time timestamp- 10 < ] unit-test
|
|
||||||
\ time get delete-file
|
|
||||||
|
|
||||||
SYMBOL: longname "" 255 CHAR: a pad-left \ longname set
|
|
||||||
\ longname get touch-file
|
|
||||||
[ t ] [ \ longname get exists? ] unit-test
|
|
||||||
[ 0 ] [ \ longname get file-length ] unit-test
|
|
||||||
\ longname get delete-file
|
|
||||||
[ f ] [ \ longname get exists? ] unit-test
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
USING: alien errors io kernel libs-io mmap namespaces test ;
|
|
||||||
|
|
||||||
IN: temporary
|
|
||||||
SYMBOL: mmap "mmap-test.txt" \ mmap set
|
|
||||||
|
|
||||||
[ \ mmap get delete-file ] catch drop
|
|
||||||
\ mmap get [
|
|
||||||
"Four" write
|
|
||||||
] with-file-writer
|
|
||||||
|
|
||||||
\ mmap get [
|
|
||||||
>r CHAR: R r> mmap-address 3 set-alien-unsigned-1
|
|
||||||
] with-mmap
|
|
||||||
|
|
||||||
\ mmap get [
|
|
||||||
mmap-address 3 alien-unsigned-1 CHAR: R = [
|
|
||||||
"mmap test failed" throw
|
|
||||||
] unless
|
|
||||||
] with-mmap
|
|
||||||
|
|
||||||
[ \ mmap get delete-file ] catch drop
|
|
Loading…
Reference in New Issue