aboutsummaryrefslogtreecommitdiff
path: root/weed/util/file_util.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/util/file_util.go')
-rw-r--r--weed/util/file_util.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/weed/util/file_util.go b/weed/util/file_util.go
index bef9f7cd6..f83f80265 100644
--- a/weed/util/file_util.go
+++ b/weed/util/file_util.go
@@ -3,6 +3,9 @@ package util
import (
"errors"
"os"
+ "os/user"
+ "path/filepath"
+ "strings"
"time"
"github.com/chrislusf/seaweedfs/weed/glog"
@@ -49,6 +52,10 @@ func CheckFile(filename string) (exists, canRead, canWrite bool, modTime time.Ti
exists = false
return
}
+ if err != nil {
+ glog.Errorf("check %s: %v", filename, err)
+ return
+ }
if fi.Mode()&0400 != 0 {
canRead = true
}
@@ -59,3 +66,24 @@ func CheckFile(filename string) (exists, canRead, canWrite bool, modTime time.Ti
fileSize = fi.Size()
return
}
+
+func ResolvePath(path string) string {
+
+ if !strings.Contains(path, "~") {
+ return path
+ }
+
+ usr, _ := user.Current()
+ dir := usr.HomeDir
+
+ if path == "~" {
+ // In case of "~", which won't be caught by the "else if"
+ path = dir
+ } else if strings.HasPrefix(path, "~/") {
+ // Use strings.HasPrefix so we don't match paths like
+ // "/something/~/something/"
+ path = filepath.Join(dir, path[2:])
+ }
+
+ return path
+}