go_sysutils/fsutils/funcs_fsattrs_linux.go

47 lines
699 B
Go
Raw Permalink Normal View History

//go:build linux
2024-01-26 09:54:46 -05:00
package fsutils
import (
`os`
`reflect`
`r00t2.io/sysutils/paths`
)
func (f *FsAttrs) Apply(path string) (err error) {
var file *os.File
var reflectVal reflect.Value
var fieldVal reflect.Value
if f == nil {
return
}
2024-01-26 09:54:46 -05:00
if err = paths.RealPath(&path); err != nil {
2024-01-26 09:54:46 -05:00
return
}
if file, err = os.Open(path); err != nil {
2024-01-26 09:54:46 -05:00
return
}
defer file.Close()
reflectVal = reflect.ValueOf(*f)
for attrNm, attrVal := range AttrNameValueMap {
fieldVal = reflectVal.FieldByName(attrNm)
if fieldVal.Bool() {
if err = setAttrs(file, attrVal); err != nil {
2024-01-26 09:54:46 -05:00
return
}
} else {
if err = unsetAttrs(file, attrVal); err != nil {
2024-01-26 09:54:46 -05:00
return
}
}
}
return
}