github.com/reapchain/go-reapchain@v0.2.15-0.20210609012950-9735c110c705/reapapis/utils.go (about) 1 package reapapis 2 3 import ( 4 "fmt" 5 "os" 6 "syscall" 7 ) 8 9 func IsWritable(path string) (isWritable bool, err error) { 10 isWritable = false 11 info, err := os.Stat(path) 12 if err != nil { 13 fmt.Println("Path doesn't exist") 14 return 15 } 16 17 err = nil 18 if !info.IsDir() { 19 fmt.Println("Path isn't a directory") 20 return 21 } 22 23 // Check if the user bit is enabled in file permission 24 if info.Mode().Perm() & (1 << (uint(7))) == 0 { 25 fmt.Println("Write permission bit is not set on this file for user") 26 return 27 } 28 29 var stat syscall.Stat_t 30 if err = syscall.Stat(path, &stat); err != nil { 31 fmt.Println("Unable to get stat") 32 return 33 } 34 35 err = nil 36 //if uint32(os.Geteuid()) != stat.Uid { 37 // isWritable = false 38 // fmt.Println("User doesn't have permission to write to this directory") 39 // return 40 //} 41 isWritable = true 42 return 43 }