37 lines
1002 B
Factor
37 lines
1002 B
Factor
! (c)2012 Joe Groff bsd license
|
|
USING: alien.data alien.strings io.directories
|
|
io.files.temp io.pathnames kernel math
|
|
memoize specialized-arrays system windows.errors
|
|
windows.kernel32 windows.ole32 windows.shell32
|
|
windows.types ;
|
|
SPECIALIZED-ARRAY: WCHAR
|
|
IN: io.files.temp.windows
|
|
|
|
<PRIVATE
|
|
|
|
: (get-temp-directory) ( -- path )
|
|
MAX_PATH 1 + dup WCHAR <c-array> [ GetTempPath ] keep
|
|
swap win32-error=0/f
|
|
alien>native-string ;
|
|
|
|
: (get-appdata-directory) ( -- path )
|
|
f
|
|
CSIDL_LOCAL_APPDATA CSIDL_FLAG_CREATE bitor
|
|
f
|
|
0
|
|
MAX_PATH 1 + WCHAR <c-array>
|
|
[ SHGetFolderPath ] keep
|
|
swap check-ole32-error alien>native-string ;
|
|
|
|
PRIVATE>
|
|
|
|
MEMO: (temp-directory) ( -- path )
|
|
(get-temp-directory) "factorcode.org\\Factor" append-path dup make-directories ;
|
|
|
|
M: windows temp-directory (temp-directory) ;
|
|
|
|
MEMO: (cache-directory) ( -- path )
|
|
(get-appdata-directory) "factorcode.org\\Factor" append-path dup make-directories ;
|
|
|
|
M: windows cache-directory (cache-directory) ;
|