github.com/c0deoo1/golang1.5@v0.0.0-20220525150107-c87c805d4593/src/os/error.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package os
     6  
     7  import (
     8  	"errors"
     9  )
    10  
    11  // Portable analogs of some common system call errors.
    12  var (
    13  	ErrInvalid    = errors.New("invalid argument")
    14  	ErrPermission = errors.New("permission denied")
    15  	ErrExist      = errors.New("file already exists")
    16  	ErrNotExist   = errors.New("file does not exist")
    17  )
    18  
    19  // PathError records an error and the operation and file path that caused it.
    20  type PathError struct {
    21  	Op   string
    22  	Path string
    23  	Err  error
    24  }
    25  
    26  func (e *PathError) Error() string { return e.Op + " " + e.Path + ": " + e.Err.Error() }
    27  
    28  // SyscallError records an error from a specific system call.
    29  type SyscallError struct {
    30  	Syscall string
    31  	Err     error
    32  }
    33  
    34  func (e *SyscallError) Error() string { return e.Syscall + ": " + e.Err.Error() }
    35  
    36  // NewSyscallError returns, as an error, a new SyscallError
    37  // with the given system call name and error details.
    38  // As a convenience, if err is nil, NewSyscallError returns nil.
    39  func NewSyscallError(syscall string, err error) error {
    40  	if err == nil {
    41  		return nil
    42  	}
    43  	return &SyscallError{syscall, err}
    44  }
    45  
    46  // IsExist returns a boolean indicating whether the error is known to report
    47  // that a file or directory already exists. It is satisfied by ErrExist as
    48  // well as some syscall errors.
    49  func IsExist(err error) bool {
    50  	return isExist(err)
    51  }
    52  
    53  // IsNotExist returns a boolean indicating whether the error is known to
    54  // report that a file or directory does not exist. It is satisfied by
    55  // ErrNotExist as well as some syscall errors.
    56  func IsNotExist(err error) bool {
    57  	return isNotExist(err)
    58  }
    59  
    60  // IsPermission returns a boolean indicating whether the error is known to
    61  // report that permission is denied. It is satisfied by ErrPermission as well
    62  // as some syscall errors.
    63  func IsPermission(err error) bool {
    64  	return isPermission(err)
    65  }