Merge branch 'master' of git://factorcode.org/git/factor
commit
fd54bbc4b3
|
@ -4,7 +4,7 @@ USING: kernel words namespaces classes parser continuations
|
||||||
math math.parser
|
math math.parser
|
||||||
combinators sequences splitting quotations arrays strings tools.time
|
combinators sequences splitting quotations arrays strings tools.time
|
||||||
parser-combinators new-slots accessors assocs.lib
|
parser-combinators new-slots accessors assocs.lib
|
||||||
combinators.cleave bake calendar ;
|
combinators.cleave bake calendar calendar.format ;
|
||||||
|
|
||||||
IN: builder.util
|
IN: builder.util
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,9 @@ words combinators.lib db.types combinators tools.walker ;
|
||||||
IN: db.sqlite
|
IN: db.sqlite
|
||||||
|
|
||||||
TUPLE: sqlite-db path ;
|
TUPLE: sqlite-db path ;
|
||||||
C: <sqlite-db> sqlite-db
|
|
||||||
|
M: sqlite-db make-db* ( path db -- db )
|
||||||
|
[ set-sqlite-db-path ] keep ;
|
||||||
|
|
||||||
M: sqlite-db db-open ( db -- )
|
M: sqlite-db db-open ( db -- )
|
||||||
dup sqlite-db-path sqlite-open <db>
|
dup sqlite-db-path sqlite-open <db>
|
||||||
|
@ -19,9 +21,6 @@ M: sqlite-db db-close ( handle -- )
|
||||||
|
|
||||||
M: sqlite-db dispose ( db -- ) dispose-db ;
|
M: sqlite-db dispose ( db -- ) dispose-db ;
|
||||||
|
|
||||||
: with-sqlite ( path quot -- )
|
|
||||||
>r <sqlite-db> r> with-db ; inline
|
|
||||||
|
|
||||||
TUPLE: sqlite-statement ;
|
TUPLE: sqlite-statement ;
|
||||||
|
|
||||||
TUPLE: sqlite-result-set has-more? ;
|
TUPLE: sqlite-result-set has-more? ;
|
||||||
|
@ -47,7 +46,6 @@ M: sqlite-result-set dispose ( result-set -- )
|
||||||
f swap set-result-set-handle ;
|
f swap set-result-set-handle ;
|
||||||
|
|
||||||
: sqlite-bind ( specs handle -- )
|
: sqlite-bind ( specs handle -- )
|
||||||
break
|
|
||||||
swap [ sqlite-bind-type ] with each ;
|
swap [ sqlite-bind-type ] with each ;
|
||||||
|
|
||||||
M: sqlite-statement bind-statement* ( obj statement -- )
|
M: sqlite-statement bind-statement* ( obj statement -- )
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
|
||||||
|
USING: kernel namespaces sequences
|
||||||
|
io io.files io.launcher bake builder.util
|
||||||
|
accessors vars ;
|
||||||
|
|
||||||
|
IN: size-of
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
VAR: headers
|
||||||
|
|
||||||
|
: include-headers ( -- seq )
|
||||||
|
headers> [ { "#include <" , ">" } bake to-string ] map ;
|
||||||
|
|
||||||
|
: size-of-c-program ( type -- lines )
|
||||||
|
{
|
||||||
|
"#include <stdio.h>"
|
||||||
|
include-headers
|
||||||
|
{ "main() { printf( \"%i\\n\" , sizeof( " , " ) ) ; }" }
|
||||||
|
}
|
||||||
|
bake to-strings ;
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
: c-file ( -- path ) "size-of.c" temp-file ;
|
||||||
|
|
||||||
|
: exe ( -- path ) "size-of" temp-file ;
|
||||||
|
|
||||||
|
: answer ( -- path ) "size-of-answer" temp-file ;
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
: size-of ( type -- n )
|
||||||
|
c-file
|
||||||
|
[ size-of-c-program [ print ] each ]
|
||||||
|
with-file-writer
|
||||||
|
|
||||||
|
{ "gcc" c-file "-o" exe } to-strings
|
||||||
|
[ "Error compiling generated C program" print ] run-or-bail
|
||||||
|
|
||||||
|
<process*>
|
||||||
|
{ exe } to-strings >>arguments
|
||||||
|
answer >>stdout
|
||||||
|
>desc run-process drop
|
||||||
|
|
||||||
|
answer eval-file ;
|
|
@ -0,0 +1,54 @@
|
||||||
|
|
||||||
|
USING: kernel alien.syntax math ;
|
||||||
|
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
! Ubuntu 8.04 32-bit
|
||||||
|
|
||||||
|
C-STRUCT: stat
|
||||||
|
{ "dev_t" "st_dev" }
|
||||||
|
{ "ushort" "__pad1" }
|
||||||
|
{ "ino_t" "st_ino" }
|
||||||
|
{ "mode_t" "st_mode" }
|
||||||
|
{ "nlink_t" "st_nlink" }
|
||||||
|
{ "uid_t" "st_uid" }
|
||||||
|
{ "gid_t" "st_gid" }
|
||||||
|
{ "dev_t" "st_rdev" }
|
||||||
|
{ "ushort" "__pad2" }
|
||||||
|
{ "off_t" "st_size" }
|
||||||
|
{ "blksize_t" "st_blksize" }
|
||||||
|
{ "blkcnt_t" "st_blocks" }
|
||||||
|
{ "timespec" "st_atim" }
|
||||||
|
{ "timespec" "st_mtim" }
|
||||||
|
{ "timespec" "st_ctim" }
|
||||||
|
{ "ulong" "unused4" }
|
||||||
|
{ "ulong" "unused5" } ;
|
||||||
|
|
||||||
|
FUNCTION: int __xstat ( int ver, char* pathname, stat* buf ) ;
|
||||||
|
FUNCTION: int __lxstat ( int ver, char* pathname, stat* buf ) ;
|
||||||
|
|
||||||
|
: stat ( pathname buf -- int ) 3 -rot __xstat ;
|
||||||
|
: lstat ( pathname buf -- int ) 3 -rot __lxstat ;
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
: S_IFMT OCT: 170000 ; ! These bits determine file type.
|
||||||
|
|
||||||
|
: S_IFDIR OCT: 40000 ; ! Directory.
|
||||||
|
: S_IFCHR OCT: 20000 ; ! Character device.
|
||||||
|
: S_IFBLK OCT: 60000 ; ! Block device.
|
||||||
|
: S_IFREG OCT: 100000 ; ! Regular file.
|
||||||
|
: S_IFIFO OCT: 010000 ; ! FIFO.
|
||||||
|
: S_IFLNK OCT: 120000 ; ! Symbolic link.
|
||||||
|
: S_IFSOCK OCT: 140000 ; ! Socket.
|
||||||
|
|
||||||
|
: S_ISTYPE ( mode mask -- val ) >r S_IFMT bitand r> = ;
|
||||||
|
|
||||||
|
: S_ISREG ( mode -- value ) S_IFREG S_ISTYPE ;
|
||||||
|
: S_ISDIR ( mode -- value ) S_IFDIR S_ISTYPE ;
|
||||||
|
: S_ISCHR ( mode -- value ) S_IFCHR S_ISTYPE ;
|
||||||
|
: S_ISBLK ( mode -- value ) S_IFBLK S_ISTYPE ;
|
||||||
|
: S_ISFIFO ( mode -- value ) S_IFIFO S_ISTYPE ;
|
||||||
|
: S_ISLNK ( mode -- value ) S_IFLNK S_ISTYPE ;
|
||||||
|
: S_ISSOCK ( mode -- value ) S_IFSOCK S_ISTYPE ;
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
|
||||||
|
USING: kernel alien.syntax math ;
|
||||||
|
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
! Ubuntu 7.10 64-bit
|
||||||
|
|
||||||
|
C-STRUCT: stat
|
||||||
|
{ "dev_t" "st_dev" }
|
||||||
|
{ "ino_t" "st_ino" }
|
||||||
|
{ "nlink_t" "st_nlink" }
|
||||||
|
{ "mode_t" "st_mode" }
|
||||||
|
{ "uid_t" "st_uid" }
|
||||||
|
{ "gid_t" "st_gid" }
|
||||||
|
{ "int" "pad0" }
|
||||||
|
{ "dev_t" "st_rdev" }
|
||||||
|
{ "off_t" "st_size" }
|
||||||
|
{ "blksize_t" "st_blksize" }
|
||||||
|
{ "blkcnt_t" "st_blocks" }
|
||||||
|
{ "timespec" "st_atim" }
|
||||||
|
{ "timespec" "st_mtim" }
|
||||||
|
{ "timespec" "st_ctim" }
|
||||||
|
{ "long" "__unused0" }
|
||||||
|
{ "long" "__unused1" }
|
||||||
|
{ "long" "__unused2" } ;
|
||||||
|
|
||||||
|
FUNCTION: int __xstat ( int ver, char* pathname, stat* buf ) ;
|
||||||
|
FUNCTION: int __lxstat ( int ver, char* pathname, stat* buf ) ;
|
||||||
|
|
||||||
|
: stat ( pathname buf -- int ) 3 -rot __xstat ;
|
||||||
|
: lstat ( pathname buf -- int ) 3 -rot __lxstat ;
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
: S_IFMT OCT: 170000 ; ! These bits determine file type.
|
||||||
|
|
||||||
|
: S_IFDIR OCT: 40000 ; ! Directory.
|
||||||
|
: S_IFCHR OCT: 20000 ; ! Character device.
|
||||||
|
: S_IFBLK OCT: 60000 ; ! Block device.
|
||||||
|
: S_IFREG OCT: 100000 ; ! Regular file.
|
||||||
|
: S_IFIFO OCT: 010000 ; ! FIFO.
|
||||||
|
: S_IFLNK OCT: 120000 ; ! Symbolic link.
|
||||||
|
: S_IFSOCK OCT: 140000 ; ! Socket.
|
||||||
|
|
||||||
|
: S_ISTYPE ( mode mask -- val ) >r S_IFMT bitand r> = ;
|
||||||
|
|
||||||
|
: S_ISREG ( mode -- value ) S_IFREG S_ISTYPE ;
|
||||||
|
: S_ISDIR ( mode -- value ) S_IFDIR S_ISTYPE ;
|
||||||
|
: S_ISCHR ( mode -- value ) S_IFCHR S_ISTYPE ;
|
||||||
|
: S_ISBLK ( mode -- value ) S_IFBLK S_ISTYPE ;
|
||||||
|
: S_ISFIFO ( mode -- value ) S_IFIFO S_ISTYPE ;
|
||||||
|
: S_ISLNK ( mode -- value ) S_IFLNK S_ISTYPE ;
|
||||||
|
: S_ISSOCK ( mode -- value ) S_IFSOCK S_ISTYPE ;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
USING: system combinators vocabs.loader ;
|
||||||
|
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
cell-bits
|
||||||
|
{
|
||||||
|
{ 32 [ "unix.stat.linux.32" require ] }
|
||||||
|
{ 64 [ "unix.stat.linux.64" require ] }
|
||||||
|
}
|
||||||
|
case
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
USING: system combinators vocabs.loader ;
|
||||||
|
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
{
|
||||||
|
{ [ linux? ] [ "unix.stat.linux" require ] }
|
||||||
|
{ [ t ] [ ] }
|
||||||
|
}
|
||||||
|
cond
|
||||||
|
|
Loading…
Reference in New Issue