]> gitweb.factorcode.org Git - factor.git/blob - basis/io/files/temp/windows/windows.factor
io.files.temp.windows: fix up
[factor.git] / basis / io / files / temp / windows / windows.factor
1 ! (c)2012 Joe Groff bsd license
2 USING: alien.data alien.strings io.directories
3 io.encodings.utf16n io.files.temp io.pathnames kernel math
4 memoize specialized-arrays system windows.errors
5 windows.kernel32 windows.ole32 windows.shell32
6 windows.types ;
7 SPECIALIZED-ARRAY: WCHAR
8 IN: io.files.temp.windows
9
10 <PRIVATE
11
12 : (get-temp-directory) ( -- path )
13     MAX_PATH 1 + dup WCHAR <c-array> [ GetTempPath ] keep
14     swap win32-error=0/f
15     utf16n alien>string ;
16
17 : (get-appdata-directory) ( -- path )
18     f
19     CSIDL_LOCAL_APPDATA CSIDL_FLAG_CREATE bitor
20     f
21     0
22     MAX_PATH 1 + WCHAR <c-array>
23     [ SHGetFolderPath ] keep
24     swap ole32-error
25     utf16n alien>string ;
26
27 PRIVATE>
28
29 MEMO: (temp-directory) ( -- path )
30     (get-temp-directory) "factorcode.org\\Factor" append-path dup make-directories ;
31
32 M: windows temp-directory (temp-directory) ;
33
34 MEMO: (cache-directory) ( -- path )
35     (get-appdata-directory) "factorcode.org\\Factor" append-path dup make-directories ;
36
37 M: windows cache-directory (cache-directory) ;