1// Copyright 2009 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5// +build aix darwin dragonfly freebsd hurd js,wasm linux netbsd openbsd solaris windows 6 7package poll 8 9import ( 10 "io" 11 "syscall" 12) 13 14// eofError returns io.EOF when fd is available for reading end of 15// file. 16func (fd *FD) eofError(n int, err error) error { 17 if n == 0 && err == nil && fd.ZeroReadIsEOF { 18 return io.EOF 19 } 20 return err 21} 22 23// Fchmod wraps syscall.Fchmod. 24func (fd *FD) Fchmod(mode uint32) error { 25 if err := fd.incref(); err != nil { 26 return err 27 } 28 defer fd.decref() 29 return syscall.Fchmod(fd.Sysfd, mode) 30} 31 32// Fchown wraps syscall.Fchown. 33func (fd *FD) Fchown(uid, gid int) error { 34 if err := fd.incref(); err != nil { 35 return err 36 } 37 defer fd.decref() 38 return syscall.Fchown(fd.Sysfd, uid, gid) 39} 40 41// Ftruncate wraps syscall.Ftruncate. 42func (fd *FD) Ftruncate(size int64) error { 43 if err := fd.incref(); err != nil { 44 return err 45 } 46 defer fd.decref() 47 return syscall.Ftruncate(fd.Sysfd, size) 48} 49