summaryrefslogtreecommitdiff
path: root/src/lib/syscall/file_darwin.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2008-09-26 14:11:26 -0700
committerRuss Cox <rsc@golang.org>2008-09-26 14:11:26 -0700
commit3564bd92f037220525e0d5c92541f4fdc1717b35 (patch)
tree26c67a72dec44faba761ffd9fac52a927ec58ffe /src/lib/syscall/file_darwin.go
parenta56084d76909d5433ef4c4c17e8326116afa8cbc (diff)
downloadgolang-3564bd92f037220525e0d5c92541f4fdc1717b35.tar.gz
move src/syscall to src/lib/syscall.
enforce rule: all kernel data structures and constants go in syscall module. move things that should be in syscall out of net. make net a single package. R=r OCL=15985 CL=15994
Diffstat (limited to 'src/lib/syscall/file_darwin.go')
-rw-r--r--src/lib/syscall/file_darwin.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/lib/syscall/file_darwin.go b/src/lib/syscall/file_darwin.go
new file mode 100644
index 000000000..c481b0d1e
--- /dev/null
+++ b/src/lib/syscall/file_darwin.go
@@ -0,0 +1,88 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+// File operations for Darwin
+
+import syscall "syscall"
+
+const NameBufsize = 512
+
+export func open(name string, mode int64, perm int64) (ret int64, errno int64) {
+ var namebuf [NameBufsize]byte;
+ if !StringToBytes(&namebuf, name) {
+ return -1, ENAMETOOLONG
+ }
+ r1, r2, err := Syscall(SYS_OPEN, BytePtr(&namebuf[0]), mode, perm);
+ return r1, err;
+}
+
+export func creat(name string, perm int64) (ret int64, errno int64) {
+ var namebuf [NameBufsize]byte;
+ if !StringToBytes(&namebuf, name) {
+ return -1, ENAMETOOLONG
+ }
+ r1, r2, err := Syscall(SYS_OPEN, BytePtr(&namebuf[0]), O_CREAT|O_WRONLY|O_TRUNC, perm);
+ return r1, err;
+}
+
+export func close(fd int64) (ret int64, errno int64) {
+ r1, r2, err := Syscall(SYS_CLOSE, fd, 0, 0);
+ return r1, err;
+}
+
+export func read(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) {
+ r1, r2, err := Syscall(SYS_READ, fd, BytePtr(buf), nbytes);
+ return r1, err;
+}
+
+export func write(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) {
+ r1, r2, err := Syscall(SYS_WRITE, fd, BytePtr(buf), nbytes);
+ return r1, err;
+}
+
+export func pipe(fds *[2]int64) (ret int64, errno int64) {
+ r1, r2, err := Syscall(SYS_PIPE, 0, 0, 0);
+ if r1 < 0 {
+ return r1, err;
+ }
+ fds[0] = r1;
+ fds[1] = r2;
+ return 0, 0;
+}
+
+export func stat(name string, buf *Stat) (ret int64, errno int64) {
+ var namebuf [NameBufsize]byte;
+ if !StringToBytes(&namebuf, name) {
+ return -1, ENAMETOOLONG
+ }
+ r1, r2, err := Syscall(SYS_STAT, BytePtr(&namebuf[0]), StatPtr(buf), 0);
+ return r1, err;
+}
+
+export func lstat(name *byte, buf *Stat) (ret int64, errno int64) {
+ r1, r2, err := Syscall(SYS_LSTAT, BytePtr(name), StatPtr(buf), 0);
+ return r1, err;
+}
+
+export func fstat(fd int64, buf *Stat) (ret int64, errno int64) {
+ r1, r2, err := Syscall(SYS_FSTAT, fd, StatPtr(buf), 0);
+ return r1, err;
+}
+
+export func unlink(name string) (ret int64, errno int64) {
+ var namebuf [NameBufsize]byte;
+ if !StringToBytes(&namebuf, name) {
+ return -1, ENAMETOOLONG
+ }
+ r1, r2, err := Syscall(SYS_UNLINK, BytePtr(&namebuf[0]), 0, 0);
+ return r1, err;
+}
+
+export func fcntl(fd, cmd, arg int64) (ret int64, errno int64) {
+ r1, r2, err := Syscall(SYS_FCNTL, fd, cmd, arg)
+ return r1, err
+}
+