47 lines
721 B
Go
47 lines
721 B
Go
//go:build !windows
|
|
|
|
package main
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
)
|
|
|
|
func moveFile(src, dst string) error {
|
|
if err := os.Rename(src, dst); err == nil {
|
|
return nil
|
|
} else {
|
|
in, err2 := os.Open(src)
|
|
if err2 != nil {
|
|
return err
|
|
}
|
|
defer in.Close()
|
|
|
|
out, err2 := os.Create(dst)
|
|
if err2 != nil {
|
|
return err
|
|
}
|
|
if _, err2 := io.Copy(out, in); err2 != nil {
|
|
_ = out.Close()
|
|
return err2
|
|
}
|
|
if err2 := out.Close(); err2 != nil {
|
|
return err2
|
|
}
|
|
return os.Remove(src)
|
|
}
|
|
}
|
|
|
|
func isSharingViolation(err error) bool {
|
|
_ = err
|
|
return false
|
|
}
|
|
|
|
func removeWithRetry(path string) error {
|
|
return os.Remove(path)
|
|
}
|
|
|
|
func renameWithRetry(oldPath, newPath string) error {
|
|
return os.Rename(oldPath, newPath)
|
|
}
|