From 916c9a7cdbb95b6807726981652a9d011c6e6f8e Mon Sep 17 00:00:00 2001 From: warrenbox Date: Tue, 13 Jul 2021 13:03:08 -0500 Subject: [PATCH] testing windows build --- lib/dir_perm.go | 12 ++++++++++++ lib/dir_perm_windows.go | 29 +++++++++++++++++++++++++++++ lib/files.go | 8 +++----- 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 lib/dir_perm.go create mode 100644 lib/dir_perm_windows.go diff --git a/lib/dir_perm.go b/lib/dir_perm.go new file mode 100644 index 00000000..0a833cbe --- /dev/null +++ b/lib/dir_perm.go @@ -0,0 +1,12 @@ +// +build !windows + +package lib + +import "golang.org/x/sys/unix" + +//Check if user has permission to directory : +//dir=path to file +//return bool +func CheckDirWritable(dir string) bool { + return unix.Access(dir, unix.W_OK) == nil +} diff --git a/lib/dir_perm_windows.go b/lib/dir_perm_windows.go new file mode 100644 index 00000000..56a6be27 --- /dev/null +++ b/lib/dir_perm_windows.go @@ -0,0 +1,29 @@ +package lib + +import ( + "fmt" + "os" +) + +func CheckDirWritable(path string) bool { + + info, err := os.Stat(path) + if err != nil { + fmt.Println("Path doesn't exist") + return false + } + + err = nil + if !info.IsDir() { + fmt.Println("Path isn't a directory") + return false + } + + // Check if the user bit is enabled in file permission + if info.Mode().Perm()&(1<<(uint(7))) == 0 { + fmt.Println("Write permission bit is not set on this file for user") + return false + } + + return true +} diff --git a/lib/files.go b/lib/files.go index 5e9ecb55..2922eb44 100644 --- a/lib/files.go +++ b/lib/files.go @@ -11,8 +11,6 @@ import ( "os" "path/filepath" "strings" - - "golang.org/x/sys/unix" ) // RenameFile : rename file name @@ -228,9 +226,9 @@ func GetFileName(configfile string) string { //Check if user has permission to directory : //dir=path to file //return bool -func CheckDirWritable(dir string) bool { - return unix.Access(dir, unix.W_OK) == nil -} +// func CheckDirWritable(dir string) bool { +// return unix.Access(dir, unix.W_OK) == nil +// } // func WindowsCheckDirWritable(path string) bool {