package fsutils import ( `os` `reflect` `github.com/g0rbe/go-chattr` `r00t2.io/sysutils/paths` ) func (f *FsAttrs) Apply(path string) (err error) { var file *os.File var reflectVal reflect.Value var fieldVal reflect.Value var myPath string = path if err = paths.RealPath(&myPath); err != nil { return } if file, err = os.Open(myPath); err != nil { return } defer file.Close() reflectVal = reflect.ValueOf(*f) for attrNm, attrVal := range AttrNameValueMap { fieldVal = reflectVal.FieldByName(attrNm) if fieldVal.Bool() { if err = chattr.SetAttr(file, attrVal); err != nil { return } } else { if err = chattr.UnsetAttr(file, attrVal); err != nil { return } } } return }