]> Cypherpunks repositories - gostls13.git/commitdiff
throw away . and .. in directory listings
authorRuss Cox <rsc@golang.org>
Tue, 7 Apr 2009 07:40:50 +0000 (00:40 -0700)
committerRuss Cox <rsc@golang.org>
Tue, 7 Apr 2009 07:40:50 +0000 (00:40 -0700)
R=r
DELTA=13  (11 added, 0 deleted, 2 changed)
OCL=27147
CL=27154

src/lib/os/dir_amd64_darwin.go
src/lib/os/dir_amd64_linux.go
src/lib/os/os_test.go

index c62f74dfc74d7a61fb011343c141fc0b1837a748..76da8f4d9738e834a40641417ea293b6488f34e2 100644 (file)
@@ -50,6 +50,10 @@ func readdirnames(file *File, count int) (names []string, err *os.Error) {
                        if dirent.Ino == 0 {    // File absent in directory.
                                continue
                        }
+                       var name = string(dirent.Name[0:dirent.Namlen]);
+                       if name == "." || name == ".." {        // Useless names
+                               continue
+                       }
                        count--;
                        if len(names) == cap(names) {
                                nnames := make([]string, len(names), 2*len(names));
@@ -59,7 +63,7 @@ func readdirnames(file *File, count int) (names []string, err *os.Error) {
                                names = nnames;
                        }
                        names = names[0:len(names)+1];
-                       names[len(names)-1] = string(dirent.Name[0:dirent.Namlen]);
+                       names[len(names)-1] = name;
                }
        }
        return names, nil
index cbb0d13dbde90fe43ba211f715a696b5b69a825e..2b3ce1383b24201badb1617db1d1aff277f129f2 100644 (file)
@@ -59,6 +59,10 @@ func readdirnames(file *File, count int) (names []string, err *os.Error) {
                        if dirent.Ino == 0 {    // File absent in directory.
                                continue
                        }
+                       var name = string(dirent.Name[0:clen(dirent.Namlen)]);
+                       if name == "." || name == ".." {        // Useless names
+                               continue
+                       }
                        count--;
                        if len(names) == cap(names) {
                                nnames := make([]string, len(names), 2*len(names));
@@ -68,7 +72,7 @@ func readdirnames(file *File, count int) (names []string, err *os.Error) {
                                names = nnames;
                        }
                        names = names[0:len(names)+1];
-                       names[len(names)-1] = string(dirent.Name[0:clen(dirent.Name)]);
+                       names[len(names)-1] = name;
                }
        }
        return names, nil;
index 2f0cd883c9350b21edf855cabba92e94c9cdcbd7..93a2c5e089b6d565051442ab85b08fc4bf5bd3d4 100644 (file)
@@ -110,6 +110,9 @@ func testReaddirnames(dir string, contents []string, t *testing.T) {
        for i, m := range contents {
                found := false;
                for j, n := range s {
+                       if n == "." || n == ".." {
+                               t.Errorf("got %s in directory", n);
+                       }
                        if m == n {
                                if found {
                                        t.Error("present twice:", m);