26 lines
444 B
Go
26 lines
444 B
Go
|
package filemode
|
||
|
|
||
|
import (
|
||
|
"io/fs"
|
||
|
"strconv"
|
||
|
)
|
||
|
|
||
|
// Parse parses a string of 3 or 4 numbers as a *NIX filesystem permission.
|
||
|
//
|
||
|
// "0777" or "777" -> fs.FileMode(0777)
|
||
|
//
|
||
|
// "0644" or "644" -> fs.FileMode(0644)
|
||
|
func Parse(in string) (fs.FileMode, error) {
|
||
|
if in == "" {
|
||
|
return fs.FileMode(0), nil
|
||
|
}
|
||
|
if len(in) == 3 {
|
||
|
in = "0" + in
|
||
|
}
|
||
|
md, e := strconv.ParseUint(in, 8, 64)
|
||
|
if e != nil {
|
||
|
return 0, e
|
||
|
}
|
||
|
return fs.FileMode(md), nil
|
||
|
}
|