| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- package constant
 
- import (
 
- 	"os"
 
- 	"path/filepath"
 
- 	"github.com/sagernet/sing/common/rw"
 
- )
 
- const dirName = "sing-box"
 
- var resourcePaths []string
 
- func FindPath(name string) (string, bool) {
 
- 	name = os.ExpandEnv(name)
 
- 	if rw.FileExists(name) {
 
- 		return name, true
 
- 	}
 
- 	for _, dir := range resourcePaths {
 
- 		if path := filepath.Join(dir, dirName, name); rw.FileExists(path) {
 
- 			return path, true
 
- 		}
 
- 		if path := filepath.Join(dir, name); rw.FileExists(path) {
 
- 			return path, true
 
- 		}
 
- 	}
 
- 	return name, false
 
- }
 
- func init() {
 
- 	resourcePaths = append(resourcePaths, ".")
 
- 	if home := os.Getenv("HOME"); home != "" {
 
- 		resourcePaths = append(resourcePaths, home)
 
- 	}
 
- 	if userConfigDir, err := os.UserConfigDir(); err == nil {
 
- 		resourcePaths = append(resourcePaths, userConfigDir)
 
- 	}
 
- 	if userCacheDir, err := os.UserCacheDir(); err == nil {
 
- 		resourcePaths = append(resourcePaths, userCacheDir)
 
- 	}
 
- }
 
 
  |