Home | History | Annotate | Download | only in os
      1 // Copyright 2012 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 	return err == syscall.ERROR_ALREADY_EXISTS ||
     19 		err == syscall.ERROR_FILE_EXISTS || err == ErrExist
     20 }
     21 
     22 func isNotExist(err error) bool {
     23 	switch pe := err.(type) {
     24 	case nil:
     25 		return false
     26 	case *PathError:
     27 		err = pe.Err
     28 	case *LinkError:
     29 		err = pe.Err
     30 	}
     31 	return err == syscall.ERROR_FILE_NOT_FOUND ||
     32 		err == syscall.ERROR_PATH_NOT_FOUND || err == ErrNotExist
     33 }
     34 
     35 func isPermission(err error) bool {
     36 	switch pe := err.(type) {
     37 	case nil:
     38 		return false
     39 	case *PathError:
     40 		err = pe.Err
     41 	case *LinkError:
     42 		err = pe.Err
     43 	}
     44 	return err == syscall.ERROR_ACCESS_DENIED || err == ErrPermission
     45 }
     46