1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package os2
- import "core:strings"
- user_cache_dir :: proc(allocator := context.allocator) -> (dir: string, is_defined: bool) {
- switch ODIN_OS {
- case "windows":
- dir = get_env("LocalAppData")
- if dir != "" {
- dir = strings.clone(dir, allocator)
- }
- case "darwin":
- dir = get_env("HOME")
- if dir != "" {
- dir = strings.concatenate({dir, "/Library/Caches"}, allocator)
- }
- case: // All other UNIX systems
- dir = get_env("XDG_CACHE_HOME")
- if dir == "" {
- dir = get_env("HOME")
- if dir == "" {
- return
- }
- dir = strings.concatenate({dir, "/.cache"}, allocator)
- }
- }
- is_defined = dir != ""
- return
- }
- user_config_dir :: proc(allocator := context.allocator) -> (dir: string, is_defined: bool) {
- switch ODIN_OS {
- case "windows":
- dir = get_env("AppData")
- if dir != "" {
- dir = strings.clone(dir, allocator)
- }
- case "darwin":
- dir = get_env("HOME")
- if dir != "" {
- dir = strings.concatenate({dir, "/Library/Application Support"}, allocator)
- }
- case: // All other UNIX systems
- dir = get_env("XDG_CACHE_HOME")
- if dir == "" {
- dir = get_env("HOME")
- if dir == "" {
- return
- }
- dir = strings.concatenate({dir, "/.config"}, allocator)
- }
- }
- is_defined = dir != ""
- return
- }
- user_home_dir :: proc() -> (dir: string, is_defined: bool) {
- env := "HOME"
- switch ODIN_OS {
- case "windows":
- env = "USERPROFILE"
- }
- if v := get_env(env); v != "" {
- return v, true
- }
- return "", false
- }
|