diff options
Diffstat (limited to 'doc/progs/fd.go')
| -rw-r--r-- | doc/progs/fd.go | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/doc/progs/fd.go b/doc/progs/fd.go index 76b784f83..4c3ac1587 100644 --- a/doc/progs/fd.go +++ b/doc/progs/fd.go @@ -4,21 +4,21 @@ package fd -import Syscall "syscall" +import ( + "os"; + "syscall"; +) export type FD struct { - fildes int64; // file descriptor number - name string; // file name at Open time + fildes int64; // file descriptor number + name string; // file name at Open time } func NewFD(fd int64, name string) *FD { if fd < 0 { return nil } - n := new(FD); - n.fildes = fd; - n.name = name; - return n + return &FD{fd, name} } export var ( @@ -27,36 +27,36 @@ export var ( Stderr = NewFD(2, "/dev/stderr"); ) -export func Open(name string, mode int64, perm int64) (fd *FD, errno int64) { - r, e := Syscall.open(name, mode, perm); - return NewFD(r, name), e +export func Open(name string, mode int64, perm int64) (fd *FD, err *os.Error) { + r, e := syscall.open(name, mode, perm); + return NewFD(r, name), os.ErrnoToError(e) } -func (fd *FD) Close() int64 { +func (fd *FD) Close() *os.Error { if fd == nil { - return Syscall.EINVAL + return os.EINVAL } - r, e := Syscall.close(fd.fildes); + r, e := syscall.close(fd.fildes); fd.fildes = -1; // so it can't be closed again - return 0 + return nil } -func (fd *FD) Read(b []byte) (ret int64, errno int64) { +func (fd *FD) Read(b []byte) (ret int, err *os.Error) { if fd == nil { - return -1, Syscall.EINVAL + return -1, os.EINVAL } - r, e := Syscall.read(fd.fildes, &b[0], int64(len(b))); - return r, e + r, e := syscall.read(fd.fildes, &b[0], int64(len(b))); + return int(r), os.ErrnoToError(e) } -func (fd *FD) Write(b []byte) (ret int64, errno int64) { +func (fd *FD) Write(b []byte) (ret int, err *os.Error) { if fd == nil { - return -1, Syscall.EINVAL + return -1, os.EINVAL } - r, e := Syscall.write(fd.fildes, &b[0], int64(len(b))); - return r, e + r, e := syscall.write(fd.fildes, &b[0], int64(len(b))); + return int(r), os.ErrnoToError(e) } -func (fd *FD) Name() string { +func (fd *FD) String() string { return fd.name } |
