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  }