]> Cypherpunks repositories - gostls13.git/commitdiff
fstat used wrong system call, lstat used wrong type of name
authorRob Pike <r@golang.org>
Sat, 7 Feb 2009 01:10:30 +0000 (17:10 -0800)
committerRob Pike <r@golang.org>
Sat, 7 Feb 2009 01:10:30 +0000 (17:10 -0800)
R=rsc
DELTA=7  (4 added, 0 deleted, 3 changed)
OCL=24617
CL=24617

src/lib/syscall/file_darwin.go

index f3e6c3163ca2081d7bf7350505699781dbb09ff7..d89752dc0a03cfa529a70e53a35b86a0081a013c 100644 (file)
@@ -65,13 +65,17 @@ func Stat(name string, buf *Stat_t) (ret int64, errno int64) {
        return r1, err;
 }
 
-func Lstat(name *byte, buf *Stat_t) (ret int64, errno int64) {
-       r1, r2, err := Syscall(SYS_LSTAT, int64(uintptr(unsafe.Pointer(name))), int64(uintptr(unsafe.Pointer(buf))), 0);
+func Lstat(name string, buf *Stat_t) (ret int64, errno int64) {
+       var namebuf [nameBufsize]byte;
+       if !StringToBytes(namebuf, name) {
+               return -1, ENAMETOOLONG
+       }
+       r1, r2, err := Syscall(SYS_LSTAT64, int64(uintptr(unsafe.Pointer(&namebuf[0]))), int64(uintptr(unsafe.Pointer(buf))), 0);
        return r1, err;
 }
 
 func Fstat(fd int64, buf *Stat_t) (ret int64, errno int64) {
-       r1, r2, err := Syscall(SYS_FSTAT, fd, int64(uintptr(unsafe.Pointer(buf))), 0);
+       r1, r2, err := Syscall(SYS_FSTAT64, fd, int64(uintptr(unsafe.Pointer(buf))), 0);
        return r1, err;
 }