]> gitweb.factorcode.org Git - factor.git/blob - basis/io/files/temp/windows/windows.factor
core/basis/extra: use flags{ } in places.
[factor.git] / basis / io / files / temp / windows / windows.factor
1 ! Copyright (C) 2012 Joe Groff.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.data alien.strings io.directories io.files.temp
4 io.pathnames kernel literals math memoize specialized-arrays
5 system windows.errors windows.kernel32 windows.ole32
6 windows.shell32 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     alien>native-string ;
16
17 PRIVATE>
18
19 : get-appdata-directory ( -- path )
20     f
21     flags{ CSIDL_LOCAL_APPDATA CSIDL_FLAG_CREATE }
22     f
23     0
24     MAX_PATH 1 + WCHAR <c-array>
25     [ SHGetFolderPath ] keep
26     swap check-ole32-error alien>native-string ;
27
28 M: windows default-temp-directory
29     get-temp-directory "factorcode.org\\Factor" append-path ;
30
31 M: windows default-cache-directory
32     get-appdata-directory "factorcode.org\\Factor" append-path ;