]> Cypherpunks repositories - gostls13.git/commitdiff
add lstat
authorRob Pike <r@golang.org>
Mon, 28 Jul 2008 20:07:58 +0000 (13:07 -0700)
committerRob Pike <r@golang.org>
Mon, 28 Jul 2008 20:07:58 +0000 (13:07 -0700)
clean up some code
fix comments
add paramter names to interface

R=ken
OCL=13521
CL=13521

src/syscall/errstr_darwin.go
src/syscall/errstr_linux.go
src/syscall/stat_amd64_darwin.go
src/syscall/stat_amd64_linux.go
src/syscall/syscall.go
src/syscall/syscall_amd64_darwin.s
src/syscall/syscall_amd64_linux.s

index aac256909d3071c566acdf868e6138846db77cd9..c3ae97523431ed290abd0c20829cd56a28060bef 100644 (file)
@@ -329,8 +329,6 @@ func init(){
        error[ELAST] = "Must be equal largest errno"; 
 }
 
-var digits string = "0123456789"
-
 func str(val int64) string {  // do it here rather than with fmt to avoid dependency
        if val < 0 {
                return "-" + str(-val);
@@ -338,11 +336,11 @@ func str(val int64) string {  // do it here rather than with fmt to avoid depend
        var buf [32]byte;  // big enough for int64
        i := len(buf)-1;
        for val >= 10 {
-               buf[i] = digits[val%10];
+               buf[i] = val%10 + '0';
                i--;
                val /= 10;
        }
-       buf[i] = digits[val];
+       buf[i] = val + '0';
        return string(buf)[i:len(buf)];
 }
 
index 875217afc19b792e4953fc9160fab7afd56e1463..fa42572cf7aead18117b26abb4021ceb38ba5f13 100644 (file)
@@ -403,8 +403,6 @@ func init(){
        error[EKEYREJECTED] = "Key was rejected by service";
 }
 
-var digits string = "0123456789"
-
 func str(val int64) string {  // do it here rather than with fmt to avoid dependency
        if val < 0 {
                return "-" + str(-val);
@@ -412,11 +410,11 @@ func str(val int64) string {  // do it here rather than with fmt to avoid depend
        var buf [32]byte;  // big enough for int64
        i := len(buf)-1;
        for val >= 10 {
-               buf[i] = digits[val%10];
+               buf[i] = val%10 + '0';
                i--;
                val /= 10;
        }
-       buf[i] = digits[val];
+       buf[i] = val + '0';
        return string(buf)[i:len(buf)];
 }
 
index 84a09d2bddf386baa99a7c1eccad38bed02cc79a..efec383840358c0c1bd783529cf04e7243c4f33b 100644 (file)
@@ -4,13 +4,14 @@
 
 package syscall
 
-func stat(*byte, *Stat) (ret int64, errno int64);
-func fstat(int64, *Stat) (ret int64, errno int64);
+func stat(name *byte, buf *Stat) (ret int64, errno int64);
+func fstat(fd int64, buf *Stat) (ret int64, errno int64);
+func lstat(name *byte, buf *Stat) (ret int64, errno int64);
 
 export Stat
-export stat, fstat
+export stat, fstat, lstat
 
-// Stat and relatives for Linux
+// Stat and relatives for Darwin
 
 type dev_t uint32;
 type ino_t uint64;
index 92d99e4caa4d24706d1098ac3e15647ef77db67b..a7bff9db603345070c95e8220ec8d580c7d1ac16 100644 (file)
@@ -4,11 +4,12 @@
 
 package syscall
 
-func stat(*byte, *Stat) (ret int64, errno int64);
-func fstat(int64, *Stat) (ret int64, errno int64);
+func stat(name *byte, buf *Stat) (ret int64, errno int64);
+func fstat(fd int64, buf *Stat) (ret int64, errno int64);
+func lstat(name *byte, buf *Stat) (ret int64, errno int64);
 
 export Stat
-export stat, fstat
+export stat, fstat, lstat
 
 // Stat and relatives for Linux
 
index f6277d414f667fb73cb1ae83d334e4075050e4a1..a834e299894278861ca03fb0adfb2e76c572c575 100644 (file)
@@ -11,9 +11,9 @@ package syscall
  * in these calling sequences.
  */
 
-func open(*byte, int64) (ret int64, errno int64);
-func close(int64) (ret int64, errno int64);
-func read(int64, *byte, int64) (ret int64, errno int64);
-func write(int64, *byte, int64) (ret int64, errno int64);
+func open(name *byte, mode int64) (ret int64, errno int64);
+func close(fd int64) (ret int64, errno int64);
+func read(fd int64, buf *byte, nbytes int64) (ret int64, errno int64);
+func write(fd int64, buf *byte, nbytes int64) (ret int64, errno int64);
 
 export open, close, read, write
index 3f32ff653b9e67b5d6f28c70e6862c65e06a703e..7fc316f87afc325285cbdc8032493a51e77ea36e 100644 (file)
@@ -85,3 +85,16 @@ TEXT syscall·fstat(SB),1,$-8
        MOVQ    AX, 24(SP)
        MOVQ    $0, 32(SP)
        RET
+
+TEXT   syscall·lstat(SB),1,$-8
+       MOVQ    8(SP), DI
+       MOVQ    16(SP), SI
+       MOVL    $(0x2000000+340), AX    // syscall entry
+       SYSCALL
+       JCC     4(PC)
+       MOVQ    $-1, 24(SP)
+       MOVQ    AX, 32(SP)
+       RET
+       MOVQ    AX, 24(SP)
+       MOVQ    $0, 32(SP)
+       RET
index 7eab69fc0d84e9033d8e5b96823588cf2f62bc91..1a37dc0d29c6eeb1049ffffcd47f0054320a1557 100644 (file)
@@ -99,3 +99,19 @@ TEXT syscall·fstat(SB),1,$0-16
        MOVQ    AX, 24(SP)
        MOVQ    $0, 32(SP)
        RET
+
+TEXT   syscall·lstat(SB),1,$0-16
+       MOVL    8(SP), DI
+       MOVQ    16(SP), SI
+       MOVQ    $0, DX
+       MOVQ    $6, AX                  // syscall entry
+       SYSCALL
+       CMPQ    AX, $0xfffffffffffff001
+       JLS     5(PC)
+       MOVQ    $-1, 24(SP)
+       NEGQ    AX
+       MOVQ    AX, 32(SP)
+       RET
+       MOVQ    AX, 24(SP)
+       MOVQ    $0, 32(SP)
+       RET