Commit b94ae260 authored by Alex Brainman's avatar Alex Brainman Committed by Russ Cox

syscall: handle EOF on pipe - special case on Windows

R=rsc
CC=golang-dev
https://golang.org/cl/962046
parent ac1d46a2
...@@ -184,6 +184,10 @@ func Open(path string, mode int, perm int) (fd int, errno int) { ...@@ -184,6 +184,10 @@ func Open(path string, mode int, perm int) (fd int, errno int) {
func Read(fd int, p []byte) (n int, errno int) { func Read(fd int, p []byte) (n int, errno int) {
var done uint32 var done uint32
if ok, e := ReadFile(int32(fd), p, &done, nil); !ok { if ok, e := ReadFile(int32(fd), p, &done, nil); !ok {
if e == ERROR_BROKEN_PIPE {
// BUG(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin
return 0, 0
}
return 0, e return 0, e
} }
return int(done), 0 return int(done), 0
......
...@@ -8,6 +8,7 @@ package syscall ...@@ -8,6 +8,7 @@ package syscall
const ( const (
ERROR_FILE_NOT_FOUND = 2 ERROR_FILE_NOT_FOUND = 2
ERROR_NO_MORE_FILES = 18 ERROR_NO_MORE_FILES = 18
ERROR_BROKEN_PIPE = 109
ERROR_INSUFFICIENT_BUFFER = 122 ERROR_INSUFFICIENT_BUFFER = 122
ERROR_MOD_NOT_FOUND = 126 ERROR_MOD_NOT_FOUND = 126
ERROR_PROC_NOT_FOUND = 127 ERROR_PROC_NOT_FOUND = 127
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment