summaryrefslogtreecommitdiff
path: root/doc/progs/file.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-06-25 20:24:55 -0700
committerRuss Cox <rsc@golang.org>2009-06-25 20:24:55 -0700
commitb26cd1bfcd7107d8208595614ba45f54d5efacf6 (patch)
tree1596fd2f89c1d896cdf5772aebc910f4e0ff5bda /doc/progs/file.go
parent37fd11a43607dc5f7ff5c38311b060ada2a0e7a5 (diff)
downloadgolang-b26cd1bfcd7107d8208595614ba45f54d5efacf6.tar.gz
Change os.Error convention:
echo back context of call in error if likely to be useful. For example, if os.Open("/etc/passwd", os.O_RDONLY) fails with syscall.EPERM, it returns as the os.Error &PathError{ Op: "open", Path: "/etc/passwd" Error: os.EPERM } which formats as open /etc/passwd: permission denied Not converted: datafmt go/... google/... regexp tabwriter template R=r DELTA=1153 (561 added, 156 deleted, 436 changed) OCL=30738 CL=30781
Diffstat (limited to 'doc/progs/file.go')
-rw-r--r--doc/progs/file.go20
1 files changed, 16 insertions, 4 deletions
diff --git a/doc/progs/file.go b/doc/progs/file.go
index ff796c565..bda3890de 100644
--- a/doc/progs/file.go
+++ b/doc/progs/file.go
@@ -29,7 +29,10 @@ var (
func Open(name string, mode int, perm int) (file *File, err os.Error) {
r, e := syscall.Open(name, mode, perm);
- return newFile(r, name), os.ErrnoToError(e)
+ if e != 0 {
+ err = os.Errno(e);
+ }
+ return newFile(r, name), err
}
func (file *File) Close() os.Error {
@@ -38,7 +41,10 @@ func (file *File) Close() os.Error {
}
e := syscall.Close(file.fd);
file.fd = -1; // so it can't be closed again
- return os.ErrnoToError(e);
+ if e != 0 {
+ return os.Errno(e);
+ }
+ return nil
}
func (file *File) Read(b []byte) (ret int, err os.Error) {
@@ -46,7 +52,10 @@ func (file *File) Read(b []byte) (ret int, err os.Error) {
return -1, os.EINVAL
}
r, e := syscall.Read(file.fd, b);
- return int(r), os.ErrnoToError(e)
+ if e != 0 {
+ err = os.Errno(e);
+ }
+ return int(r), err
}
func (file *File) Write(b []byte) (ret int, err os.Error) {
@@ -54,7 +63,10 @@ func (file *File) Write(b []byte) (ret int, err os.Error) {
return -1, os.EINVAL
}
r, e := syscall.Write(file.fd, b);
- return int(r), os.ErrnoToError(e)
+ if e != 0 {
+ err = os.Errno(e);
+ }
+ return int(r), err
}
func (file *File) String() string {