github.com/akaros/go-akaros@v0.0.0-20181004170632-85005d477eab/src/os/error_akaros.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 "syscall"
     8  
     9  func isExist(err error) bool {
    10  	switch pe := err.(type) {
    11  	case nil:
    12  		return false
    13  	case *PathError:
    14  		err = pe.Err
    15  	case *LinkError:
    16  		err = pe.Err
    17  	}
    18  	switch pe := err.(type) {
    19  	case *syscall.AkaError:
    20  		return pe.Errno() == syscall.EEXIST
    21  	default:
    22  		return pe == ErrExist
    23  	}
    24  }
    25  
    26  func isNotExist(err error) bool {
    27  	switch pe := err.(type) {
    28  	case nil:
    29  		return false
    30  	case *PathError:
    31  		err = pe.Err
    32  	case *LinkError:
    33  		err = pe.Err
    34  	}
    35  	switch pe := err.(type) {
    36  	case *syscall.AkaError:
    37  		return pe.Errno() == syscall.ENOENT
    38  	default:
    39  		return pe == ErrNotExist
    40  	}
    41  }
    42  
    43  func isPermission(err error) bool {
    44  	switch pe := err.(type) {
    45  	case nil:
    46  		return false
    47  	case *PathError:
    48  		err = pe.Err
    49  	case *LinkError:
    50  		err = pe.Err
    51  	}
    52  	switch pe := err.(type) {
    53  	case *syscall.AkaError:
    54  		return pe.Errno() == syscall.EACCES || pe.Errno() == syscall.EPERM
    55  	default:
    56  		return pe == ErrPermission
    57  	}
    58  }