github.com/liujq9674git/golang-src-1.7@v0.0.0-20230517174348-17f6ec47f3f8/src/os/error_unix.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 // +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris 6 7 package os 8 9 import "syscall" 10 11 func isExist(err error) bool { 12 switch pe := err.(type) { 13 case nil: 14 return false 15 case *PathError: 16 err = pe.Err 17 case *LinkError: 18 err = pe.Err 19 case *SyscallError: 20 err = pe.Err 21 } 22 return err == syscall.EEXIST || err == syscall.ENOTEMPTY || err == ErrExist 23 } 24 25 func isNotExist(err error) bool { 26 switch pe := err.(type) { 27 case nil: 28 return false 29 case *PathError: 30 err = pe.Err 31 case *LinkError: 32 err = pe.Err 33 case *SyscallError: 34 err = pe.Err 35 } 36 return err == syscall.ENOENT || err == ErrNotExist 37 } 38 39 func isPermission(err error) bool { 40 switch pe := err.(type) { 41 case nil: 42 return false 43 case *PathError: 44 err = pe.Err 45 case *LinkError: 46 err = pe.Err 47 case *SyscallError: 48 err = pe.Err 49 } 50 return err == syscall.EACCES || err == syscall.EPERM || err == ErrPermission 51 }