github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/vfs/vfsflags/filemode.go (about)

     1  package vfsflags
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strconv"
     7  )
     8  
     9  // FileMode is a command line friendly os.FileMode
    10  type FileMode struct {
    11  	Mode *os.FileMode
    12  }
    13  
    14  // String turns FileMode into a string
    15  func (x *FileMode) String() string {
    16  	return fmt.Sprintf("0%3o", *x.Mode)
    17  }
    18  
    19  // Set a FileMode
    20  func (x *FileMode) Set(s string) error {
    21  	i, err := strconv.ParseInt(s, 8, 32)
    22  	if err != nil {
    23  		return fmt.Errorf("bad FileMode - must be octal digits: %w", err)
    24  	}
    25  	*x.Mode = (os.FileMode)(i)
    26  	return nil
    27  }
    28  
    29  // Type of the value
    30  func (x *FileMode) Type() string {
    31  	return "FileMode"
    32  }