2021-07-24 21:27:48 +08:00
|
|
|
//go:build !linux
|
|
|
|
// +build !linux
|
|
|
|
|
|
|
|
package mountlib
|
|
|
|
|
|
|
|
import (
|
2021-11-04 18:12:57 +08:00
|
|
|
"fmt"
|
2021-07-24 21:27:48 +08:00
|
|
|
"io"
|
|
|
|
"os"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/rclone/rclone/fs"
|
|
|
|
)
|
|
|
|
|
|
|
|
// CheckMountEmpty checks if mountpoint folder is empty.
|
|
|
|
// On non-Linux unixes we list directory to ensure that.
|
|
|
|
func CheckMountEmpty(mountpoint string) error {
|
|
|
|
fp, err := os.Open(mountpoint)
|
|
|
|
if err != nil {
|
2022-06-09 04:54:39 +08:00
|
|
|
return fmt.Errorf("cannot open: %s: %w", mountpoint, err)
|
2021-07-24 21:27:48 +08:00
|
|
|
}
|
|
|
|
defer fs.CheckClose(fp, &err)
|
|
|
|
|
|
|
|
_, err = fp.Readdirnames(1)
|
|
|
|
if err == io.EOF {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2022-06-09 04:54:39 +08:00
|
|
|
const msg = "directory is not empty, use --allow-non-empty to mount anyway: %s"
|
2021-07-24 21:27:48 +08:00
|
|
|
if err == nil {
|
2021-11-04 18:12:57 +08:00
|
|
|
return fmt.Errorf(msg, mountpoint)
|
2021-07-24 21:27:48 +08:00
|
|
|
}
|
2021-11-04 18:12:57 +08:00
|
|
|
return fmt.Errorf(msg+": %w", mountpoint, err)
|
2021-07-24 21:27:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// CheckMountReady should check if mountpoint is mounted by rclone.
|
|
|
|
// The check is implemented only for Linux so this does nothing.
|
|
|
|
func CheckMountReady(mountpoint string) error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// WaitMountReady should wait until mountpoint is mounted by rclone.
|
|
|
|
// The check is implemented only for Linux so we just sleep a little.
|
|
|
|
func WaitMountReady(mountpoint string, timeout time.Duration) error {
|
|
|
|
time.Sleep(timeout)
|
|
|
|
return nil
|
|
|
|
}
|