diff options
Diffstat (limited to 'src/lib/syscall/file_linux.go')
-rw-r--r-- | src/lib/syscall/file_linux.go | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/lib/syscall/file_linux.go b/src/lib/syscall/file_linux.go index 3fa2588af..4d6982bb2 100644 --- a/src/lib/syscall/file_linux.go +++ b/src/lib/syscall/file_linux.go @@ -6,7 +6,10 @@ package syscall // File operations for Linux -import syscall "syscall" +import ( + "syscall"; + "unsafe"; +) const NameBufsize = 512 @@ -15,7 +18,7 @@ export func open(name string, mode int64, perm int64) (ret int64, errno int64) { if !StringToBytes(&namebuf, name) { return -1, ENAMETOOLONG } - r1, r2, err := Syscall(SYS_OPEN, BytePtr(&namebuf[0]), mode, perm); + r1, r2, err := Syscall(SYS_OPEN, int64(uintptr(unsafe.pointer(&namebuf[0]))), mode, perm); return r1, err; } @@ -24,7 +27,7 @@ export func creat(name string, perm int64) (ret int64, errno int64) { if !StringToBytes(&namebuf, name) { return -1, ENAMETOOLONG } - r1, r2, err := Syscall(SYS_OPEN, BytePtr(&namebuf[0]), O_CREAT|O_WRONLY|O_TRUNC, perm); + r1, r2, err := Syscall(SYS_OPEN, int64(uintptr(unsafe.pointer(&namebuf[0]))), O_CREAT|O_WRONLY|O_TRUNC, perm); return r1, err; } @@ -34,18 +37,18 @@ export func close(fd int64) (ret int64, errno int64) { } export func read(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) { - r1, r2, err := Syscall(SYS_READ, fd, BytePtr(buf), nbytes); + r1, r2, err := Syscall(SYS_READ, fd, int64(uintptr(unsafe.pointer(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); + r1, r2, err := Syscall(SYS_WRITE, fd, int64(uintptr(unsafe.pointer(buf))), nbytes); return r1, err; } export func pipe(fds *[2]int64) (ret int64, errno int64) { var t [2] int32; - r1, r2, err := Syscall(SYS_PIPE, Int32Ptr(&t[0]), 0, 0); + r1, r2, err := Syscall(SYS_PIPE, int64(uintptr(unsafe.pointer(&t[0]))), 0, 0); if r1 < 0 { return r1, err; } @@ -59,17 +62,17 @@ export func stat(name string, buf *Stat) (ret int64, errno int64) { if !StringToBytes(&namebuf, name) { return -1, ENAMETOOLONG } - r1, r2, err := Syscall(SYS_STAT, BytePtr(&namebuf[0]), StatPtr(buf), 0); + r1, r2, err := Syscall(SYS_STAT, int64(uintptr(unsafe.pointer(&namebuf[0]))), int64(uintptr(unsafe.pointer(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); + r1, r2, err := Syscall(SYS_LSTAT, int64(uintptr(unsafe.pointer(name))), int64(uintptr(unsafe.pointer(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); + r1, r2, err := Syscall(SYS_FSTAT, fd, int64(uintptr(unsafe.pointer(buf))), 0); return r1, err; } @@ -78,7 +81,7 @@ export func unlink(name string) (ret int64, errno int64) { if !StringToBytes(&namebuf, name) { return -1, ENAMETOOLONG } - r1, r2, err := Syscall(SYS_UNLINK, BytePtr(&namebuf[0]), 0, 0); + r1, r2, err := Syscall(SYS_UNLINK, int64(uintptr(unsafe.pointer(&namebuf[0]))), 0, 0); return r1, err; } @@ -92,7 +95,7 @@ export func mkdir(name string, perm int64) (ret int64, errno int64) { if !StringToBytes(&namebuf, name) { return -1, ENAMETOOLONG } - r1, r2, err := Syscall(SYS_MKDIR, BytePtr(&namebuf[0]), perm, 0); + r1, r2, err := Syscall(SYS_MKDIR, int64(uintptr(unsafe.pointer(&namebuf[0]))), perm, 0); return r1, err; } |