factor/core/io/files.factor

52 lines
1.3 KiB
Factor
Raw Normal View History

! Copyright (C) 2004, 2007 Slava Pestov.
2006-05-15 00:03:55 -04:00
! See http://factorcode.org/license.txt for BSD license.
IN: io
USING: io-internals hashtables kernel math memory namespaces
sequences strings styles arrays definitions ;
! Words for accessing filesystem meta-data.
2004-11-25 21:51:47 -05:00
2006-08-16 21:55:53 -04:00
: path+ ( str1 str2 -- str )
>r dup "/" tail? [ 1 head* ] when r>
dup "/" head? [ 1 tail ] when
>r "/" r> 3append ;
: stat ( path -- directory? permissions length modified )
(stat) ;
2005-09-01 16:37:32 -04:00
2006-10-31 00:52:02 -05:00
: exists? ( path -- ? ) stat >r 3drop r> >boolean ;
2005-09-01 16:37:32 -04:00
2006-10-31 00:52:02 -05:00
: directory? ( path -- ? ) stat 3drop ;
2005-09-01 16:37:32 -04:00
2006-08-16 21:55:53 -04:00
: directory ( path -- seq )
directory-fixup (directory)
[ { "." ".." } member? not ] subset ;
2005-09-01 16:37:32 -04:00
2006-10-31 00:52:02 -05:00
: file-length ( path -- n ) stat 4array third ;
2005-09-01 16:37:32 -04:00
2006-10-31 00:52:02 -05:00
: file-modified ( path -- n ) stat >r 3drop r> ;
2006-09-06 18:48:46 -04:00
2006-08-16 21:55:53 -04:00
: parent-dir ( path -- parent )
dup [ "/\\" member? ] find-last
drop dup [ head ] [ 2drop "." ] if ;
2006-03-27 22:20:42 -05:00
: resource-path ( path -- newpath )
\ resource-path get [ image parent-dir ] unless*
swap path+ ;
: ?resource-path ( path -- newpath )
2006-09-29 23:03:27 -04:00
"resource:" ?head [ resource-path ] when ;
2005-09-27 14:12:17 -04:00
TUPLE: pathname string ;
M: pathname where pathname-string 1 2array ;
M: pathname <=> [ pathname-string ] 2apply <=> ;
2006-09-29 20:45:24 -04:00
: home ( -- dir )
{
{ [ winnt? ] [ "USERPROFILE" os-env ] }
{ [ wince? ] [ image parent-dir ] }
{ [ unix? ] [ "HOME" os-env ] }
} cond ;