Browse Source

pkg/fileutil: expose PrivateFileMode/DirMode

Gyu-Ho Lee 9 years ago
parent
commit
47d5257622

+ 6 - 5
pkg/fileutil/fileutil.go

@@ -25,9 +25,10 @@ import (
 )
 
 const (
-	privateFileMode = 0600
-	// owner can make/remove files inside the directory
-	privateDirMode = 0700
+	// PrivateFileMode grants owner to read/write a file.
+	PrivateFileMode = 0600
+	// PrivateDirMode grants owner to make/remove files inside the directory.
+	PrivateDirMode = 0700
 )
 
 var (
@@ -38,7 +39,7 @@ var (
 // to dir. It returns nil if dir is writable.
 func IsDirWriteable(dir string) error {
 	f := path.Join(dir, ".touch")
-	if err := ioutil.WriteFile(f, []byte(""), privateFileMode); err != nil {
+	if err := ioutil.WriteFile(f, []byte(""), PrivateFileMode); err != nil {
 		return err
 	}
 	return os.Remove(f)
@@ -62,7 +63,7 @@ func ReadDir(dirpath string) ([]string, error) {
 // TouchDirAll is similar to os.MkdirAll. It creates directories with 0700 permission if any directory
 // does not exists. TouchDirAll also ensures the given directory is writable.
 func TouchDirAll(dir string) error {
-	err := os.MkdirAll(dir, privateDirMode)
+	err := os.MkdirAll(dir, PrivateDirMode)
 	if err != nil && err != os.ErrExist {
 		return err
 	}

+ 2 - 2
pkg/fileutil/lock_plan9.go

@@ -21,7 +21,7 @@ import (
 )
 
 func TryLockFile(path string, flag int, perm os.FileMode) (*LockedFile, error) {
-	if err := os.Chmod(path, syscall.DMEXCL|0600); err != nil {
+	if err := os.Chmod(path, syscall.DMEXCL|PrivateFileMode); err != nil {
 		return nil, err
 	}
 	f, err := os.Open(path, flag, perm)
@@ -32,7 +32,7 @@ func TryLockFile(path string, flag int, perm os.FileMode) (*LockedFile, error) {
 }
 
 func LockFile(path string, flag int, perm os.FileMode) (*LockedFile, error) {
-	if err := os.Chmod(path, syscall.DMEXCL|0600); err != nil {
+	if err := os.Chmod(path, syscall.DMEXCL|PrivateFileMode); err != nil {
 		return nil, err
 	}
 	for {

+ 4 - 4
pkg/fileutil/lock_test.go

@@ -35,13 +35,13 @@ func TestLockAndUnlock(t *testing.T) {
 	}()
 
 	// lock the file
-	l, err := LockFile(f.Name(), os.O_WRONLY, 0600)
+	l, err := LockFile(f.Name(), os.O_WRONLY, PrivateFileMode)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	// try lock a locked file
-	if _, err = TryLockFile(f.Name(), os.O_WRONLY, 0600); err != ErrLocked {
+	if _, err = TryLockFile(f.Name(), os.O_WRONLY, PrivateFileMode); err != ErrLocked {
 		t.Fatal(err)
 	}
 
@@ -51,7 +51,7 @@ func TestLockAndUnlock(t *testing.T) {
 	}
 
 	// try lock the unlocked file
-	dupl, err := TryLockFile(f.Name(), os.O_WRONLY, 0600)
+	dupl, err := TryLockFile(f.Name(), os.O_WRONLY, PrivateFileMode)
 	if err != nil {
 		t.Errorf("err = %v, want %v", err, nil)
 	}
@@ -59,7 +59,7 @@ func TestLockAndUnlock(t *testing.T) {
 	// blocking on locked file
 	locked := make(chan struct{}, 1)
 	go func() {
-		bl, blerr := LockFile(f.Name(), os.O_WRONLY, 0600)
+		bl, blerr := LockFile(f.Name(), os.O_WRONLY, PrivateFileMode)
 		if blerr != nil {
 			t.Fatal(blerr)
 		}

+ 1 - 1
pkg/fileutil/purge.go

@@ -40,7 +40,7 @@ func PurgeFile(dirname string, suffix string, max uint, interval time.Duration,
 			sort.Strings(newfnames)
 			for len(newfnames) > int(max) {
 				f := path.Join(dirname, newfnames[0])
-				l, err := TryLockFile(f, os.O_WRONLY, 0600)
+				l, err := TryLockFile(f, os.O_WRONLY, PrivateFileMode)
 				if err != nil {
 					break
 				}

+ 1 - 1
pkg/fileutil/purge_test.go

@@ -102,7 +102,7 @@ func TestPurgeFileHoldingLockFile(t *testing.T) {
 
 	// create a purge barrier at 5
 	p := path.Join(dir, fmt.Sprintf("%d.test", 5))
-	l, err := LockFile(p, os.O_WRONLY, 0600)
+	l, err := LockFile(p, os.O_WRONLY, PrivateFileMode)
 	if err != nil {
 		t.Fatal(err)
 	}