From 608a967b7cc31440bb1eef65c7bd80ceea1003dd Mon Sep 17 00:00:00 2001 From: erg Date: Thu, 7 May 2009 16:53:32 -0500 Subject: [PATCH] fix bootstrap errors, add missing files --- basis/io/directories/unix/linux/linux.factor | 10 ++++++++++ basis/io/directories/unix/linux/tags.txt | 1 + basis/io/directories/unix/unix.factor | 4 +++- basis/unix/linux/linux.factor | 4 ++-- 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 basis/io/directories/unix/linux/linux.factor create mode 100644 basis/io/directories/unix/linux/tags.txt diff --git a/basis/io/directories/unix/linux/linux.factor b/basis/io/directories/unix/linux/linux.factor new file mode 100644 index 0000000000..ba5b27dacd --- /dev/null +++ b/basis/io/directories/unix/linux/linux.factor @@ -0,0 +1,10 @@ +! Copyright (C) 2009 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: alien.c-types io.directories.unix kernel system unix ; +IN: io.directories.unix.linux + +M: unix find-next-file ( DIR* -- byte-array ) + "dirent" + f + [ readdir64_r 0 = [ (io-error) ] unless ] 2keep + *void* [ drop f ] unless ; diff --git a/basis/io/directories/unix/linux/tags.txt b/basis/io/directories/unix/linux/tags.txt new file mode 100644 index 0000000000..6bf68304bb --- /dev/null +++ b/basis/io/directories/unix/linux/tags.txt @@ -0,0 +1 @@ +unportable diff --git a/basis/io/directories/unix/unix.factor b/basis/io/directories/unix/unix.factor index 0db91f1153..5e2fda5848 100644 --- a/basis/io/directories/unix/unix.factor +++ b/basis/io/directories/unix/unix.factor @@ -4,7 +4,7 @@ USING: accessors alien.c-types alien.strings combinators continuations destructors fry io io.backend io.backend.unix io.directories io.encodings.binary io.encodings.utf8 io.files io.pathnames io.files.types kernel math.bitwise sequences system -unix unix.stat ; +unix unix.stat vocabs.loader ; IN: io.directories.unix : touch-mode ( -- n ) @@ -72,3 +72,5 @@ M: unix (directory-entries) ( path -- seq ) [ >directory-entry ] produce nip ] with-unix-directory ; + +os linux? [ "io.directories.unix.linux" require ] when diff --git a/basis/unix/linux/linux.factor b/basis/unix/linux/linux.factor index 5a05e5c207..43a66f2dbe 100644 --- a/basis/unix/linux/linux.factor +++ b/basis/unix/linux/linux.factor @@ -94,7 +94,7 @@ C-STRUCT: passwd { "char*" "pw_shell" } ; ! dirent64 -C-STRUCT: dirent64 +C-STRUCT: dirent { "ulonglong" "d_ino" } { "longlong" "d_off" } { "ushort" "d_reclen" } @@ -103,7 +103,7 @@ C-STRUCT: dirent64 FUNCTION: int open64 ( char* path, int flags, int prot ) ; FUNCTION: dirent64* readdir64 ( DIR* dirp ) ; -FUNCTION: int readdir64_r ( void* dirp, dirent64* entry, dirent64** result ) ; +FUNCTION: int readdir64_r ( void* dirp, dirent* entry, dirent** result ) ; M: linux open-file [ open64 ] unix-system-call ;