mirror of
https://github.com/golang/go
synced 2024-11-17 14:14:56 -07:00
os: merge common Unix/Windows methods
Several method implementations were identical in file_unix.go and file_windows.go. Merge them into file_posix.go. Change-Id: I8bcfad468829530f81f52fe426b3a8c042e7bbd6 Reviewed-on: https://go-review.googlesource.com/c/go/+/224138 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
This commit is contained in:
parent
965f4566e9
commit
7f3ca5dfeb
@ -7,12 +7,57 @@
|
|||||||
package os
|
package os
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"runtime"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func sigpipe() // implemented in package runtime
|
func sigpipe() // implemented in package runtime
|
||||||
|
|
||||||
|
// Close closes the File, rendering it unusable for I/O.
|
||||||
|
// On files that support SetDeadline, any pending I/O operations will
|
||||||
|
// be canceled and return immediately with an error.
|
||||||
|
// Close will return an error if it has already been called.
|
||||||
|
func (f *File) Close() error {
|
||||||
|
if f == nil {
|
||||||
|
return ErrInvalid
|
||||||
|
}
|
||||||
|
return f.file.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// read reads up to len(b) bytes from the File.
|
||||||
|
// It returns the number of bytes read and an error, if any.
|
||||||
|
func (f *File) read(b []byte) (n int, err error) {
|
||||||
|
n, err = f.pfd.Read(b)
|
||||||
|
runtime.KeepAlive(f)
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// pread reads len(b) bytes from the File starting at byte offset off.
|
||||||
|
// It returns the number of bytes read and the error, if any.
|
||||||
|
// EOF is signaled by a zero count with err set to nil.
|
||||||
|
func (f *File) pread(b []byte, off int64) (n int, err error) {
|
||||||
|
n, err = f.pfd.Pread(b, off)
|
||||||
|
runtime.KeepAlive(f)
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// write writes len(b) bytes to the File.
|
||||||
|
// It returns the number of bytes written and an error, if any.
|
||||||
|
func (f *File) write(b []byte) (n int, err error) {
|
||||||
|
n, err = f.pfd.Write(b)
|
||||||
|
runtime.KeepAlive(f)
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// pwrite writes len(b) bytes to the File starting at byte offset off.
|
||||||
|
// It returns the number of bytes written and an error, if any.
|
||||||
|
func (f *File) pwrite(b []byte, off int64) (n int, err error) {
|
||||||
|
n, err = f.pfd.Pwrite(b, off)
|
||||||
|
runtime.KeepAlive(f)
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
// syscallMode returns the syscall-specific mode bits from Go's portable mode bits.
|
// syscallMode returns the syscall-specific mode bits from Go's portable mode bits.
|
||||||
func syscallMode(i FileMode) (o uint32) {
|
func syscallMode(i FileMode) (o uint32) {
|
||||||
o |= uint32(i.Perm())
|
o |= uint32(i.Perm())
|
||||||
|
@ -226,17 +226,6 @@ func openFileNolog(name string, flag int, perm FileMode) (*File, error) {
|
|||||||
return newFile(uintptr(r), name, kindOpenFile), nil
|
return newFile(uintptr(r), name, kindOpenFile), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close closes the File, rendering it unusable for I/O.
|
|
||||||
// On files that support SetDeadline, any pending I/O operations will
|
|
||||||
// be canceled and return immediately with an error.
|
|
||||||
// Close will return an error if it has already been called.
|
|
||||||
func (f *File) Close() error {
|
|
||||||
if f == nil {
|
|
||||||
return ErrInvalid
|
|
||||||
}
|
|
||||||
return f.file.close()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (file *file) close() error {
|
func (file *file) close() error {
|
||||||
if file == nil {
|
if file == nil {
|
||||||
return syscall.EINVAL
|
return syscall.EINVAL
|
||||||
@ -257,39 +246,6 @@ func (file *file) close() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// read reads up to len(b) bytes from the File.
|
|
||||||
// It returns the number of bytes read and an error, if any.
|
|
||||||
func (f *File) read(b []byte) (n int, err error) {
|
|
||||||
n, err = f.pfd.Read(b)
|
|
||||||
runtime.KeepAlive(f)
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// pread reads len(b) bytes from the File starting at byte offset off.
|
|
||||||
// It returns the number of bytes read and the error, if any.
|
|
||||||
// EOF is signaled by a zero count with err set to nil.
|
|
||||||
func (f *File) pread(b []byte, off int64) (n int, err error) {
|
|
||||||
n, err = f.pfd.Pread(b, off)
|
|
||||||
runtime.KeepAlive(f)
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// write writes len(b) bytes to the File.
|
|
||||||
// It returns the number of bytes written and an error, if any.
|
|
||||||
func (f *File) write(b []byte) (n int, err error) {
|
|
||||||
n, err = f.pfd.Write(b)
|
|
||||||
runtime.KeepAlive(f)
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// pwrite writes len(b) bytes to the File starting at byte offset off.
|
|
||||||
// It returns the number of bytes written and an error, if any.
|
|
||||||
func (f *File) pwrite(b []byte, off int64) (n int, err error) {
|
|
||||||
n, err = f.pfd.Pwrite(b, off)
|
|
||||||
runtime.KeepAlive(f)
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// seek sets the offset for the next Read or Write on file to offset, interpreted
|
// seek sets the offset for the next Read or Write on file to offset, interpreted
|
||||||
// according to whence: 0 means relative to the origin of the file, 1 means
|
// according to whence: 0 means relative to the origin of the file, 1 means
|
||||||
// relative to the current offset, and 2 means relative to the end.
|
// relative to the current offset, and 2 means relative to the end.
|
||||||
|
@ -182,17 +182,6 @@ func openFileNolog(name string, flag int, perm FileMode) (*File, error) {
|
|||||||
return nil, &PathError{"open", name, errf}
|
return nil, &PathError{"open", name, errf}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close closes the File, rendering it unusable for I/O.
|
|
||||||
// On files that support SetDeadline, any pending I/O operations will
|
|
||||||
// be canceled and return immediately with an error.
|
|
||||||
// Close will return an error if it has already been called.
|
|
||||||
func (file *File) Close() error {
|
|
||||||
if file == nil {
|
|
||||||
return ErrInvalid
|
|
||||||
}
|
|
||||||
return file.file.close()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (file *file) close() error {
|
func (file *file) close() error {
|
||||||
if file == nil {
|
if file == nil {
|
||||||
return syscall.EINVAL
|
return syscall.EINVAL
|
||||||
@ -214,39 +203,6 @@ func (file *file) close() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// read reads up to len(b) bytes from the File.
|
|
||||||
// It returns the number of bytes read and an error, if any.
|
|
||||||
func (f *File) read(b []byte) (n int, err error) {
|
|
||||||
n, err = f.pfd.Read(b)
|
|
||||||
runtime.KeepAlive(f)
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// pread reads len(b) bytes from the File starting at byte offset off.
|
|
||||||
// It returns the number of bytes read and the error, if any.
|
|
||||||
// EOF is signaled by a zero count with err set to 0.
|
|
||||||
func (f *File) pread(b []byte, off int64) (n int, err error) {
|
|
||||||
n, err = f.pfd.Pread(b, off)
|
|
||||||
runtime.KeepAlive(f)
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// write writes len(b) bytes to the File.
|
|
||||||
// It returns the number of bytes written and an error, if any.
|
|
||||||
func (f *File) write(b []byte) (n int, err error) {
|
|
||||||
n, err = f.pfd.Write(b)
|
|
||||||
runtime.KeepAlive(f)
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// pwrite writes len(b) bytes to the File starting at byte offset off.
|
|
||||||
// It returns the number of bytes written and an error, if any.
|
|
||||||
func (f *File) pwrite(b []byte, off int64) (n int, err error) {
|
|
||||||
n, err = f.pfd.Pwrite(b, off)
|
|
||||||
runtime.KeepAlive(f)
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// seek sets the offset for the next Read or Write on file to offset, interpreted
|
// seek sets the offset for the next Read or Write on file to offset, interpreted
|
||||||
// according to whence: 0 means relative to the origin of the file, 1 means
|
// according to whence: 0 means relative to the origin of the file, 1 means
|
||||||
// relative to the current offset, and 2 means relative to the end.
|
// relative to the current offset, and 2 means relative to the end.
|
||||||
|
Loading…
Reference in New Issue
Block a user