/* * @Author: Bartuccio Antoine * @Date: 2018-07-17 18:37:38 * @Last Modified by: klmp200 * @Last Modified time: 2018-07-17 19:35:18 */ // +build !windows package gowebframework import ( "log" "os" "syscall" ) // Check if a file or directory is writable func isWritable(path string) bool { os_stats, err := os.Stat(path) if err != nil { // Error reading file or folder log.Println(err) return false } if os_stats.Mode().Perm()&(1<<(uint(7))) == 0 { // Check if user bit is enabled log.Println("User bit on " + path + " is not enabled") return false } var syscall_stats syscall.Stat_t err = syscall.Stat(path, &syscall_stats) if err != nil { // Error getting stats log.Println(err) return false } if uint32(os.Getuid()) != syscall_stats.Uid { // User doesn't have permission to write log.Println("No permission to write on " + path) return false } return true }