| // Copyright 2017 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package exec |
| |
| import ( |
| "io/fs" |
| "syscall" |
| ) |
| |
| func init() { |
| skipStdinCopyError = func(err error) bool { |
| // Ignore ERROR_BROKEN_PIPE and ERROR_NO_DATA errors copying |
| // to stdin if the program completed successfully otherwise. |
| // See Issue 20445. |
| const _ERROR_NO_DATA = syscall.Errno(0xe8) |
| pe, ok := err.(*fs.PathError) |
| return ok && |
| pe.Op == "write" && pe.Path == "|1" && |
| (pe.Err == syscall.ERROR_BROKEN_PIPE || pe.Err == _ERROR_NO_DATA) |
| } |
| } |