mirror of
https://github.com/golang/go
synced 2024-09-29 19:24:33 -06:00
cmd/go/internal/lockedfile/internal/filelock: use errors.ErrUnsupported
All platform specific errors are now covered by errors.ErrUnsupported. Updates #41198 Change-Id: Ia9c0cad7c493305835bd5a1f349446cec409f686 Reviewed-on: https://go-review.googlesource.com/c/go/+/476917 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
This commit is contained in:
parent
7a21f799a5
commit
f4315391d7
@ -10,7 +10,6 @@ package filelock
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"os"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// A File provides the minimal set of methods required to lock an open file.
|
// A File provides the minimal set of methods required to lock an open file.
|
||||||
@ -78,22 +77,7 @@ func (lt lockType) String() string {
|
|||||||
|
|
||||||
// IsNotSupported returns a boolean indicating whether the error is known to
|
// IsNotSupported returns a boolean indicating whether the error is known to
|
||||||
// report that a function is not supported (possibly for a specific input).
|
// report that a function is not supported (possibly for a specific input).
|
||||||
// It is satisfied by ErrNotSupported as well as some syscall errors.
|
// It is satisfied by errors.ErrUnsupported as well as some syscall errors.
|
||||||
func IsNotSupported(err error) bool {
|
func IsNotSupported(err error) bool {
|
||||||
return isNotSupported(underlyingError(err))
|
return errors.Is(err, errors.ErrUnsupported)
|
||||||
}
|
|
||||||
|
|
||||||
var ErrNotSupported = errors.New("operation not supported")
|
|
||||||
|
|
||||||
// underlyingError returns the underlying error for known os error types.
|
|
||||||
func underlyingError(err error) error {
|
|
||||||
switch err := err.(type) {
|
|
||||||
case *fs.PathError:
|
|
||||||
return err.Err
|
|
||||||
case *os.LinkError:
|
|
||||||
return err.Err
|
|
||||||
case *os.SyscallError:
|
|
||||||
return err.Err
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
@ -208,7 +208,3 @@ func setlkw(fd uintptr, lt lockType) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func isNotSupported(err error) bool {
|
|
||||||
return err == syscall.ENOSYS || err == syscall.ENOTSUP || err == syscall.EOPNOTSUPP || err == ErrNotSupported
|
|
||||||
}
|
|
||||||
|
@ -6,7 +6,10 @@
|
|||||||
|
|
||||||
package filelock
|
package filelock
|
||||||
|
|
||||||
import "io/fs"
|
import (
|
||||||
|
"errors"
|
||||||
|
"io/fs"
|
||||||
|
)
|
||||||
|
|
||||||
type lockType int8
|
type lockType int8
|
||||||
|
|
||||||
@ -19,7 +22,7 @@ func lock(f File, lt lockType) error {
|
|||||||
return &fs.PathError{
|
return &fs.PathError{
|
||||||
Op: lt.String(),
|
Op: lt.String(),
|
||||||
Path: f.Name(),
|
Path: f.Name(),
|
||||||
Err: ErrNotSupported,
|
Err: errors.ErrUnsupported,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,10 +30,6 @@ func unlock(f File) error {
|
|||||||
return &fs.PathError{
|
return &fs.PathError{
|
||||||
Op: "Unlock",
|
Op: "Unlock",
|
||||||
Path: f.Name(),
|
Path: f.Name(),
|
||||||
Err: ErrNotSupported,
|
Err: errors.ErrUnsupported,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func isNotSupported(err error) bool {
|
|
||||||
return err == ErrNotSupported
|
|
||||||
}
|
|
||||||
|
@ -38,7 +38,3 @@ func lock(f File, lt lockType) (err error) {
|
|||||||
func unlock(f File) error {
|
func unlock(f File) error {
|
||||||
return lock(f, syscall.LOCK_UN)
|
return lock(f, syscall.LOCK_UN)
|
||||||
}
|
}
|
||||||
|
|
||||||
func isNotSupported(err error) bool {
|
|
||||||
return err == syscall.ENOSYS || err == syscall.ENOTSUP || err == syscall.EOPNOTSUPP || err == ErrNotSupported
|
|
||||||
}
|
|
||||||
|
@ -55,12 +55,3 @@ func unlock(f File) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func isNotSupported(err error) bool {
|
|
||||||
switch err {
|
|
||||||
case windows.ERROR_NOT_SUPPORTED, windows.ERROR_CALL_NOT_IMPLEMENTED, ErrNotSupported:
|
|
||||||
return true
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user