|
@@ -15,43 +15,55 @@ import (
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
- sBasePath string
|
|
|
- sWorkingPath string
|
|
|
- sTempPath string
|
|
|
- sUserID int
|
|
|
- sGroupID int
|
|
|
- sTVOS bool
|
|
|
+ sBasePath string
|
|
|
+ sWorkingPath string
|
|
|
+ sTempPath string
|
|
|
+ sUserID int
|
|
|
+ sGroupID int
|
|
|
+ sTVOS bool
|
|
|
+ sFixAndroidStack bool
|
|
|
)
|
|
|
|
|
|
func init() {
|
|
|
debug.SetPanicOnFault(true)
|
|
|
}
|
|
|
|
|
|
-func Setup(basePath string, workingPath string, tempPath string, isTVOS bool) {
|
|
|
- sBasePath = basePath
|
|
|
- sWorkingPath = workingPath
|
|
|
- sTempPath = tempPath
|
|
|
- sUserID = os.Getuid()
|
|
|
- sGroupID = os.Getgid()
|
|
|
- sTVOS = isTVOS
|
|
|
- os.MkdirAll(sWorkingPath, 0o777)
|
|
|
- os.MkdirAll(sTempPath, 0o777)
|
|
|
+type SetupOptions struct {
|
|
|
+ BasePath string
|
|
|
+ WorkingPath string
|
|
|
+ TempPath string
|
|
|
+ Username string
|
|
|
+ IsTVOS bool
|
|
|
+ FixAndroidStack bool
|
|
|
}
|
|
|
|
|
|
-func SetupWithUsername(basePath string, workingPath string, tempPath string, username string) error {
|
|
|
- sBasePath = basePath
|
|
|
- sWorkingPath = workingPath
|
|
|
- sTempPath = tempPath
|
|
|
- sUser, err := user.Lookup(username)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
+func Setup(options *SetupOptions) error {
|
|
|
+ sBasePath = options.BasePath
|
|
|
+ sWorkingPath = options.WorkingPath
|
|
|
+ sTempPath = options.TempPath
|
|
|
+ if options.Username != "" {
|
|
|
+ sUser, err := user.Lookup(options.Username)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ sUserID, _ = strconv.Atoi(sUser.Uid)
|
|
|
+ sGroupID, _ = strconv.Atoi(sUser.Gid)
|
|
|
+ } else {
|
|
|
+ sUserID = os.Getuid()
|
|
|
+ sGroupID = os.Getgid()
|
|
|
}
|
|
|
- sUserID, _ = strconv.Atoi(sUser.Uid)
|
|
|
- sGroupID, _ = strconv.Atoi(sUser.Gid)
|
|
|
+ sTVOS = options.IsTVOS
|
|
|
+
|
|
|
+ // TODO: remove after fixed
|
|
|
+ // https://github.com/golang/go/issues/68760
|
|
|
+ sFixAndroidStack = options.FixAndroidStack
|
|
|
+
|
|
|
os.MkdirAll(sWorkingPath, 0o777)
|
|
|
os.MkdirAll(sTempPath, 0o777)
|
|
|
- os.Chown(sWorkingPath, sUserID, sGroupID)
|
|
|
- os.Chown(sTempPath, sUserID, sGroupID)
|
|
|
+ if options.Username != "" {
|
|
|
+ os.Chown(sWorkingPath, sUserID, sGroupID)
|
|
|
+ os.Chown(sTempPath, sUserID, sGroupID)
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|
|
|
|