lib/fs: Try to remove read only Windows files (fixes #3744) (#8650)

This happens when folders contain a custom icon.

Co-authored-by: Alexandre Alves <alexandrealvesdb.contact@gmail.com>
This commit is contained in:
Jakob Borg
2022-11-07 21:33:17 +01:00
committed by GitHub
co-authored by Alexandre Alves
parent 5e384c9185
commit a29605750d
4 changed files with 46 additions and 8 deletions
+15
View File
@@ -190,6 +190,21 @@ func (f *BasicFilesystem) Lchown(name, uid, gid string) error {
return windows.SetSecurityInfo(hdl, windows.SE_FILE_OBJECT, si, (*windows.SID)(ownerSID), (*windows.SID)(groupSID), nil, nil)
}
func (f *BasicFilesystem) Remove(name string) error {
name, err := f.rooted(name)
if err != nil {
return err
}
err = os.Remove(name)
if os.IsPermission(err) {
// Try to remove the read-only attribute and try again
if os.Chmod(name, 0600) == nil {
err = os.Remove(name)
}
}
return err
}
// unrootedChecked returns the path relative to the folder root (same as
// unrooted) or an error if the given path is not a subpath and handles the
// special case when the given path is the folder root without a trailing