package fserror

import (
	"context"
	"errors"
	"os"
	"strings"
	"syscall"
)

var ErrNotMount = errors.New("client does not mount")

func IsNotMount(err error) bool {
	if err != nil {
		if err == ErrNotMount ||
			err.Error() == ErrNotMount.Error() ||
			strings.Contains(err.Error(), ErrNotMount.Error()) {
			return true
		}
	}
	return false
}

var ErrClosed = os.ErrClosed

func IsClosed(err error) bool {
	if err != nil {
		if err == ErrClosed ||
			err.Error() == ErrClosed.Error() ||
			strings.Contains(err.Error(), "closed") {
			return true
		}
	}
	return false
}

var ErrCanceled = context.Canceled

func IsCanceled(err error) bool {
	if err != nil {
		if err == ErrCanceled ||
			err.Error() == ErrCanceled.Error() ||
			strings.Contains(err.Error(), ErrCanceled.Error()) {
			return true
		}
	}
	return false
}

var ErrDir = syscall.EISDIR

func IsDir(err error) bool {
	if err != nil {
		if err == ErrDir ||
			err.Error() == ErrDir.Error() ||
			strings.Contains(err.Error(), ErrDir.Error()) {
			return true
		}
	}
	return false
}
