1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
package main
import (
"fmt"
"os"
"github.com/snapcore/snapd/osutil"
)
func die(err error) {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
func main() {
if len(os.Args) < 2 {
die(fmt.Errorf("usage: %s file", os.Args[0]))
}
f, err := os.Open(os.Args[1])
if err != nil {
die(err)
}
before, err := osutil.GetAttr(f)
if err != nil {
die(err)
}
err = osutil.SetAttr(f, before^osutil.FS_IMMUTABLE_FL)
if err != nil {
die(err)
}
after, err := osutil.GetAttr(f)
if err != nil {
die(err)
}
if before&osutil.FS_IMMUTABLE_FL != 0 {
fmt.Print("immutable")
} else {
fmt.Print("mutable")
}
fmt.Print(" -> ")
if after&osutil.FS_IMMUTABLE_FL != 0 {
fmt.Println("immutable")
} else {
fmt.Println("mutable")
}
}
|