pkg/fileutil: expose PrivateFileMode/DirMode

This commit is contained in:
Gyu-Ho Lee 2016-06-10 15:18:29 -07:00
parent 4570eddc2c
commit 47d5257622
5 changed files with 14 additions and 13 deletions

View File

@ -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
}

View File

@ -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 {

View File

@ -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)
}

View File

@ -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
}

View File

@ -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)
}