diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2017-03-21 22:16:16 +0000 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2017-03-21 22:37:27 +0000 |
| commit | 2730c17a863e0eeb7afa3589608eece8cc50e6f3 (patch) | |
| tree | 247cded80ca44d6438130feb60364f00df7054bc /src/syscall/exec_freebsd.go | |
| parent | ee80afe326bab0a4829bd39186c4f343ac680a40 (diff) | |
| download | go-2730c17a863e0eeb7afa3589608eece8cc50e6f3.tar.xz | |
syscall, os: fix FreeBSD 9 build
I broke FreeBSD 9 in https://golang.org/cl/38426 by using Pipe2.
We still want to support FreeBSD 9 for one last release (Go 1.9 will
be the last), and FreeBSD 9 doesn't have Pipe2.
So this still uses Pipe2, but falls back to Pipe on error.
Updates #18854
Updates #19072
Change-Id: I1de90fb83606c93fb84b4b86fba31e207a702835
Reviewed-on: https://go-review.googlesource.com/38430
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/syscall/exec_freebsd.go')
| -rw-r--r-- | src/syscall/exec_freebsd.go | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/syscall/exec_freebsd.go b/src/syscall/exec_freebsd.go index 1654b4ba2a..4ed32c0614 100644 --- a/src/syscall/exec_freebsd.go +++ b/src/syscall/exec_freebsd.go @@ -5,5 +5,21 @@ package syscall func forkExecPipe(p []int) error { - return Pipe2(p, O_CLOEXEC) + err := Pipe2(p, O_CLOEXEC) + if err == nil { + return nil + } + + // FreeBSD 9 fallback. + // TODO: remove this for Go 1.10 per Issue 19072 + err = Pipe(p) + if err != nil { + return err + } + _, err = fcntl(p[0], F_SETFD, FD_CLOEXEC) + if err != nil { + return err + } + _, err = fcntl(p[1], F_SETFD, FD_CLOEXEC) + return err } |
