datadir_android.go raw
1 // SPDX-License-Identifier: Unlicense OR MIT
2
3 // +build android
4
5 package app
6
7 import "C"
8
9 import (
10 "os"
11 "path/filepath"
12 "sync"
13
14 "github.com/p9c/p9/pkg/gel/gio/app/internal/wm"
15 )
16
17 var (
18 dataDirOnce sync.Once
19 dataPath string
20 )
21
22 func dataDir() (string, error) {
23 dataDirOnce.Do(func() {
24 dataPath = wm.GetDataDir()
25 // Set XDG_CACHE_HOME to make os.UserCacheDir work.
26 if _, exists := os.LookupEnv("XDG_CACHE_HOME"); !exists {
27 cachePath := filepath.Join(dataPath, "cache")
28 os.Setenv("XDG_CACHE_HOME", cachePath)
29 }
30 // Set XDG_CONFIG_HOME to make os.UserConfigDir work.
31 if _, exists := os.LookupEnv("XDG_CONFIG_HOME"); !exists {
32 cfgPath := filepath.Join(dataPath, "config")
33 os.Setenv("XDG_CONFIG_HOME", cfgPath)
34 }
35 // Set HOME to make os.UserHomeDir work.
36 if _, exists := os.LookupEnv("HOME"); !exists {
37 os.Setenv("HOME", dataPath)
38 }
39 })
40 return dataPath, nil
41 }
42