aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/os/file_unix.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/os/file_unix.go b/src/os/file_unix.go
index 25ce83bf9d..a34de8333d 100644
--- a/src/os/file_unix.go
+++ b/src/os/file_unix.go
@@ -104,13 +104,15 @@ func (f *File) Fd() uintptr {
// constraints apply.
func NewFile(fd uintptr, name string) *File {
kind := kindNewFile
- if nb, err := unix.IsNonblock(int(fd)); err == nil && nb {
- kind = kindNonBlock
- }
- f := newFile(fd, name, kind)
+ appendMode := false
if flags, err := unix.Fcntl(int(fd), syscall.F_GETFL, 0); err == nil {
- f.appendMode = flags&syscall.O_APPEND != 0
+ if unix.HasNonblockFlag(flags) {
+ kind = kindNonBlock
+ }
+ appendMode = flags&syscall.O_APPEND != 0
}
+ f := newFile(fd, name, kind)
+ f.appendMode = appendMode
return f
}