factor/basis/io/files/temp/macosx/macosx.factor

44 lines
1.2 KiB
Factor

! (c)2012 Joe Groff bsd license
USING: alien.c-types alien.syntax cocoa.plists cocoa.runtime
cocoa.types core-foundation.strings io.directories io.files
io.files.temp io.pathnames kernel memoize sequences system ;
IN: io.files.temp.macosx
<PRIVATE
FUNCTION: id NSTemporaryDirectory ( ) ;
TYPEDEF: NSUInteger NSSearchPathDirectory
CONSTANT: NSCachesDirectory 13
TYPEDEF: NSUInteger NSSearchPathDomainMask
CONSTANT: NSUserDomainMask 1
FUNCTION: id NSSearchPathForDirectoriesInDomains (
NSSearchPathDirectory directory,
NSSearchPathDomainMask domainMask,
char expandTilde
) ;
CONSTANT: factor-bundle-name "org.factorcode.Factor"
: (make-factor-bundle-subdir) ( path -- path )
factor-bundle-name append-path dup make-directories ;
: (first-existing) ( paths -- path )
[ exists? ] map-find nip
[ "no user cache directory found" throw ] unless* ; inline
PRIVATE>
MEMO: (temp-directory) ( -- path )
NSTemporaryDirectory CF>string (make-factor-bundle-subdir) ;
M: macosx temp-directory (temp-directory) ;
MEMO: (cache-directory) ( -- path )
NSCachesDirectory NSUserDomainMask 1 NSSearchPathForDirectoriesInDomains
plist> (first-existing) (make-factor-bundle-subdir) ;
M: macosx cache-directory (cache-directory) ;