func SetFileAttributes(path string, attr uint32) error { cpath, cpathErr := syscall.UTF16PtrFromString(path) if cpathErr != nil { return cpathErr } return syscall.SetFileAttributes(cpath, attr) }
func (t tempNamer) Show(path string) error { p, err := syscall.UTF16PtrFromString(path) if err != nil { return err } attrs, err := syscall.GetFileAttributes(p) if err != nil { return err } attrs &^= syscall.FILE_ATTRIBUTE_HIDDEN return syscall.SetFileAttributes(p, attrs) }
func HideFile(path string) error { p, err := syscall.UTF16PtrFromString(path) if err != nil { return err } attrs, err := syscall.GetFileAttributes(p) if err != nil { return err } attrs |= syscall.FILE_ATTRIBUTE_HIDDEN return syscall.SetFileAttributes(p, attrs) }
func (dp DiskPersistor) makeDirectory() error { dir := filepath.Dir(dp.filePath) err := os.MkdirAll(dir, dirPermissions) if err != nil { return err } p, err := syscall.UTF16PtrFromString(dir) if err != nil { return err } attrs, err := syscall.GetFileAttributes(p) if err != nil { return err } return syscall.SetFileAttributes(p, attrs|syscall.FILE_ATTRIBUTE_HIDDEN) }
// Remove removes the named file or directory. // If there is an error, it will be of type *PathError. func Remove(name string) error { p, e := syscall.UTF16PtrFromString(fixLongPath(name)) if e != nil { return &PathError{"remove", name, e} } // Go file interface forces us to know whether // name is a file or directory. Try both. e = syscall.DeleteFile(p) if e == nil { return nil } e1 := syscall.RemoveDirectory(p) if e1 == nil { return nil } // Both failed: figure out which error to return. if e1 != e { a, e2 := syscall.GetFileAttributes(p) if e2 != nil { e = e2 } else { if a&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 { e = e1 } else if a&syscall.FILE_ATTRIBUTE_READONLY != 0 { if e1 = syscall.SetFileAttributes(p, a&^syscall.FILE_ATTRIBUTE_READONLY); e1 == nil { if e = syscall.DeleteFile(p); e == nil { return nil } } } } } return &PathError{"remove", name, e} }
func hideFile(path string) { cpath, cpathErr := syscall.UTF16PtrFromString(path) if cpathErr != nil { } syscall.SetFileAttributes(cpath, syscall.FILE_ATTRIBUTE_HIDDEN) }