From: Kale Blankenship Date: Sat, 24 Sep 2016 23:39:36 +0000 (-0700) Subject: os: make IsExist report true on ERROR_DIR_NOT_EMPTY on Windows X-Git-Tag: go1.8beta1~1179 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=890c09efb72f11b3e6fd95d859260bfee7de7f31;p=gostls13.git os: make IsExist report true on ERROR_DIR_NOT_EMPTY on Windows Fixes #17164 Change-Id: I3e626d92293c1379e2922276f033fdee6f48dda3 Reviewed-on: https://go-review.googlesource.com/29753 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/os/error_windows.go b/src/os/error_windows.go index 5a57c0d1e6..02593b53fe 100644 --- a/src/os/error_windows.go +++ b/src/os/error_windows.go @@ -9,6 +9,7 @@ import "syscall" func isExist(err error) bool { err = underlyingError(err) return err == syscall.ERROR_ALREADY_EXISTS || + err == syscall.ERROR_DIR_NOT_EMPTY || err == syscall.ERROR_FILE_EXISTS || err == ErrExist } diff --git a/src/os/error_windows_test.go b/src/os/error_windows_test.go index 427dfdb962..1635c1088e 100644 --- a/src/os/error_windows_test.go +++ b/src/os/error_windows_test.go @@ -26,6 +26,10 @@ func init() { isExistTest{err: &os.PathError{Err: syscall.ERROR_PATH_NOT_FOUND}, is: false, isnot: true}, isExistTest{err: &os.LinkError{Err: syscall.ERROR_PATH_NOT_FOUND}, is: false, isnot: true}, isExistTest{err: &os.SyscallError{Err: syscall.ERROR_PATH_NOT_FOUND}, is: false, isnot: true}, + + isExistTest{err: &os.PathError{Err: syscall.ERROR_DIR_NOT_EMPTY}, is: true, isnot: false}, + isExistTest{err: &os.LinkError{Err: syscall.ERROR_DIR_NOT_EMPTY}, is: true, isnot: false}, + isExistTest{err: &os.SyscallError{Err: syscall.ERROR_DIR_NOT_EMPTY}, is: true, isnot: false}, ) isPermissionTests = append(isPermissionTests, isPermissionTest{err: &os.PathError{Err: syscall.ERROR_ACCESS_DENIED}, want: true}, diff --git a/src/syscall/ztypes_windows.go b/src/syscall/ztypes_windows.go index 191c6e602a..8c2e19653a 100644 --- a/src/syscall/ztypes_windows.go +++ b/src/syscall/ztypes_windows.go @@ -18,6 +18,7 @@ const ( ERROR_INSUFFICIENT_BUFFER Errno = 122 ERROR_MOD_NOT_FOUND Errno = 126 ERROR_PROC_NOT_FOUND Errno = 127 + ERROR_DIR_NOT_EMPTY Errno = 145 ERROR_ALREADY_EXISTS Errno = 183 ERROR_ENVVAR_NOT_FOUND Errno = 203 ERROR_MORE_DATA Errno = 234