diff options
| author | Ian Lance Taylor <iant@golang.org> | 2009-05-13 10:16:46 -0700 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2009-05-13 10:16:46 -0700 |
| commit | 7aabf2d9b1bef5bc1c5c71710a79fcab2b57166a (patch) | |
| tree | 4e7598284b339a85cf649300759ba40f8603c2cc /src/lib/syscall | |
| parent | 52f071ed4318634a872e211aebf7d55ddd271bb4 (diff) | |
| download | go-7aabf2d9b1bef5bc1c5c71710a79fcab2b57166a.tar.xz | |
Add os.Link, os.Symlink, os.Readlink.
R=r,rsc
DELTA=161 (161 added, 0 deleted, 0 changed)
OCL=28745
CL=28747
Diffstat (limited to 'src/lib/syscall')
| -rw-r--r-- | src/lib/syscall/file_darwin.go | 20 | ||||
| -rw-r--r-- | src/lib/syscall/file_linux.go | 20 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/lib/syscall/file_darwin.go b/src/lib/syscall/file_darwin.go index 01005d207b..558d66c917 100644 --- a/src/lib/syscall/file_darwin.go +++ b/src/lib/syscall/file_darwin.go @@ -110,3 +110,23 @@ func Chdir(dir string) (ret int64, errno int64) { r1, r2, err := Syscall(SYS_CHDIR, int64(uintptr(unsafe.Pointer(namebuf))), 0, 0); return r1, err; } + +func Link(oldpath, newpath string) (ret int64, errno int64) { + oldbuf := StringBytePtr(oldpath); + newbuf := StringBytePtr(newpath); + r1, r2, err := Syscall(SYS_LINK, int64(uintptr(unsafe.Pointer(oldbuf))), int64(uintptr(unsafe.Pointer(newbuf))), 0); + return r1, err; +} + +func Symlink(oldpath, newpath string) (ret int64, errno int64) { + oldbuf := StringBytePtr(oldpath); + newbuf := StringBytePtr(newpath); + r1, r2, err := Syscall(SYS_SYMLINK, int64(uintptr(unsafe.Pointer(oldbuf))), int64(uintptr(unsafe.Pointer(newbuf))), 0); + return r1, err; +} + +func Readlink(path string, buf *byte, nbytes int64) (ret int64, errno int64) { + pathbuf := StringBytePtr(path); + r1, r2, err := Syscall(SYS_READLINK, int64(uintptr(unsafe.Pointer(pathbuf))), int64(uintptr(unsafe.Pointer(buf))), nbytes); + return r1, err; +} diff --git a/src/lib/syscall/file_linux.go b/src/lib/syscall/file_linux.go index 80800b6158..c7299f8393 100644 --- a/src/lib/syscall/file_linux.go +++ b/src/lib/syscall/file_linux.go @@ -111,3 +111,23 @@ func Chdir(dir string) (ret int64, errno int64) { r1, r2, err := Syscall(SYS_CHDIR, int64(uintptr(unsafe.Pointer(namebuf))), 0, 0); return r1, err; } + +func Link(oldpath, newpath string) (ret int64, errno int64) { + oldbuf := StringBytePtr(oldpath); + newbuf := StringBytePtr(newpath); + r1, r2, err := Syscall(SYS_LINK, int64(uintptr(unsafe.Pointer(oldbuf))), int64(uintptr(unsafe.Pointer(newbuf))), 0); + return r1, err; +} + +func Symlink(oldpath, newpath string) (ret int64, errno int64) { + oldbuf := StringBytePtr(oldpath); + newbuf := StringBytePtr(newpath); + r1, r2, err := Syscall(SYS_SYMLINK, int64(uintptr(unsafe.Pointer(oldbuf))), int64(uintptr(unsafe.Pointer(newbuf))), 0); + return r1, err; +} + +func Readlink(path string, buf *byte, nbytes int64) (ret int64, errno int64) { + pathbuf := StringBytePtr(path); + r1, r2, err := Syscall(SYS_READLINK, int64(uintptr(unsafe.Pointer(pathbuf))), int64(uintptr(unsafe.Pointer(buf))), nbytes); + return r1, err; +} |
