]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: handle EOF on pipe - special case on Windows
authorAlex Brainman <alex.brainman@gmail.com>
Fri, 30 Apr 2010 19:46:46 +0000 (12:46 -0700)
committerRuss Cox <rsc@golang.org>
Fri, 30 Apr 2010 19:46:46 +0000 (12:46 -0700)
R=rsc
CC=golang-dev
https://golang.org/cl/962046

src/pkg/syscall/syscall_windows.go
src/pkg/syscall/zerrors_windows_386.go

index ec889f9e60745a1c0f08c78995aa3ef15921c67b..401b0a51a21f0bf789b1d3998ad58888a7d09ecc 100644 (file)
@@ -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) {
        var done uint32
        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 int(done), 0
index d8b22846c7f51382b4ed2e379ab304eb092a750d..e96c8170377d656e27e6fe7918284aa3811e0274 100644 (file)
@@ -8,6 +8,7 @@ package syscall
 const (
        ERROR_FILE_NOT_FOUND      = 2
        ERROR_NO_MORE_FILES       = 18
+       ERROR_BROKEN_PIPE         = 109
        ERROR_INSUFFICIENT_BUFFER = 122
        ERROR_MOD_NOT_FOUND       = 126
        ERROR_PROC_NOT_FOUND      = 127