filebrowser/backend/fileutils/copy.go

40 lines
591 B
Go
Raw Normal View History

package fileutils
import (
"os"
2024-08-24 22:02:33 +00:00
"path/filepath"
)
// Copy copies a file or folder from one place to another.
2024-11-21 00:15:30 +00:00
func CopyHelper(src, dst string) error {
2024-08-24 22:02:33 +00:00
src = filepath.Clean(src)
if src == "" {
return os.ErrNotExist
}
2024-08-24 22:02:33 +00:00
dst = filepath.Clean(dst)
if dst == "" {
return os.ErrNotExist
}
if src == "/" || dst == "/" {
2024-08-24 22:02:33 +00:00
// Prohibit copying from or to the root directory.
return os.ErrInvalid
}
if dst == src {
return os.ErrInvalid
}
2024-08-24 22:02:33 +00:00
info, err := os.Stat(src)
if err != nil {
return err
}
if info.IsDir() {
2024-08-24 22:02:33 +00:00
return CopyDir(src, dst)
}
2024-08-24 22:02:33 +00:00
return CopyFile(src, dst)
}