mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
io/fs: move FileInfo, FileMode, PathError, ErrInvalid, ... from os to io/fs
First step of creating the new io/fs package. For #41190. Change-Id: I1339b1abdd533b0f1deab283628088b2f706fb5b Reviewed-on: https://go-review.googlesource.com/c/go/+/243906 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
This commit is contained in:
parent
627959eb04
commit
d4da735091
6 changed files with 406 additions and 193 deletions
|
|
@ -7,6 +7,7 @@ package os
|
|||
import (
|
||||
"internal/oserror"
|
||||
"internal/poll"
|
||||
"io/fs"
|
||||
)
|
||||
|
||||
// Portable analogs of some common system call errors.
|
||||
|
|
@ -16,20 +17,17 @@ import (
|
|||
var (
|
||||
// ErrInvalid indicates an invalid argument.
|
||||
// Methods on File will return this error when the receiver is nil.
|
||||
ErrInvalid = errInvalid() // "invalid argument"
|
||||
ErrInvalid = fs.ErrInvalid // "invalid argument"
|
||||
|
||||
ErrPermission = fs.ErrPermission // "permission denied"
|
||||
ErrExist = fs.ErrExist // "file already exists"
|
||||
ErrNotExist = fs.ErrNotExist // "file does not exist"
|
||||
ErrClosed = fs.ErrClosed // "file already closed"
|
||||
|
||||
ErrPermission = errPermission() // "permission denied"
|
||||
ErrExist = errExist() // "file already exists"
|
||||
ErrNotExist = errNotExist() // "file does not exist"
|
||||
ErrClosed = errClosed() // "file already closed"
|
||||
ErrNoDeadline = errNoDeadline() // "file type does not support deadline"
|
||||
ErrDeadlineExceeded = errDeadlineExceeded() // "i/o timeout"
|
||||
)
|
||||
|
||||
func errInvalid() error { return oserror.ErrInvalid }
|
||||
func errPermission() error { return oserror.ErrPermission }
|
||||
func errExist() error { return oserror.ErrExist }
|
||||
func errNotExist() error { return oserror.ErrNotExist }
|
||||
func errClosed() error { return oserror.ErrClosed }
|
||||
func errNoDeadline() error { return poll.ErrNoDeadline }
|
||||
|
||||
|
|
@ -47,21 +45,7 @@ type timeout interface {
|
|||
}
|
||||
|
||||
// PathError records an error and the operation and file path that caused it.
|
||||
type PathError struct {
|
||||
Op string
|
||||
Path string
|
||||
Err error
|
||||
}
|
||||
|
||||
func (e *PathError) Error() string { return e.Op + " " + e.Path + ": " + e.Err.Error() }
|
||||
|
||||
func (e *PathError) Unwrap() error { return e.Err }
|
||||
|
||||
// Timeout reports whether this error represents a timeout.
|
||||
func (e *PathError) Timeout() bool {
|
||||
t, ok := e.Err.(timeout)
|
||||
return ok && t.Timeout()
|
||||
}
|
||||
type PathError = fs.PathError
|
||||
|
||||
// SyscallError records an error from a specific system call.
|
||||
type SyscallError struct {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue