1 // Copyright 2011 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.
12 // for testing: whatever interrupts a sleep
16 // readFile reads and returns the content of the named file.
17 // It is a trivial implementation of ioutil.ReadFile, reimplemented
18 // here to avoid depending on io/ioutil or os.
19 func readFile(name
string) ([]byte, error
) {
20 f
, err
:= syscall
.Open(name
, syscall
.O_RDONLY
, 0)
24 defer syscall
.Close(f
)
31 n
, err
= syscall
.Read(f
, buf
[:])
33 ret
= append(ret
, buf
[:n
]...)
35 if n
== 0 || err
!= nil {
42 func open(name
string) (uintptr, error
) {
43 fd
, err
:= syscall
.Open(name
, syscall
.O_RDONLY
, 0)
47 return uintptr(fd
), nil
50 func closefd(fd
uintptr) {
51 syscall
.Close(syscall
.Handle(fd
))
54 func preadn(fd
uintptr, buf
[]byte, off
int) error
{
59 if _
, err
:= syscall
.Seek(syscall
.Handle(fd
), int64(off
), whence
); err
!= nil {
63 m
, err
:= syscall
.Read(syscall
.Handle(fd
), buf
)
66 return errors
.New("short read")