diff options
Diffstat (limited to 'src/pkg/os/stat_plan9.go')
-rw-r--r-- | src/pkg/os/stat_plan9.go | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/src/pkg/os/stat_plan9.go b/src/pkg/os/stat_plan9.go deleted file mode 100644 index d2300d598..000000000 --- a/src/pkg/os/stat_plan9.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package os - -import "syscall" - -func fileInfoFromStat(fi *FileInfo, d *Dir) *FileInfo { - fi.Dev = uint64(d.Qid.Vers) | uint64(d.Qid.Type<<32) - fi.Ino = d.Qid.Path - - fi.Mode = uint32(d.Mode) & 0777 - if (d.Mode & syscall.DMDIR) == syscall.DMDIR { - fi.Mode |= syscall.S_IFDIR - } else { - fi.Mode |= syscall.S_IFREG - } - - fi.Size = int64(d.Length) - fi.Atime_ns = 1e9 * int64(d.Atime) - fi.Mtime_ns = 1e9 * int64(d.Mtime) - fi.Name = d.Name - fi.FollowedSymlink = false - return fi -} - -// arg is an open *File or a path string. -func dirstat(arg interface{}) (d *Dir, err Error) { - var name string - nd := syscall.STATFIXLEN + 16*4 - - for i := 0; i < 2; i++ { /* should work by the second try */ - buf := make([]byte, nd) - - var n int - var e syscall.Error - - switch syscallArg := arg.(type) { - case *File: - name = syscallArg.name - n, e = syscall.Fstat(syscallArg.fd, buf) - case string: - name = syscallArg - n, e = syscall.Stat(name, buf) - } - - if e != nil { - return nil, &PathError{"stat", name, e} - } - - if n < syscall.STATFIXLEN { - return nil, &PathError{"stat", name, Eshortstat} - } - - ntmp, _ := gbit16(buf) - nd = int(ntmp) - - if nd <= n { - d, e := UnmarshalDir(buf[:n]) - - if e != nil { - return nil, &PathError{"stat", name, e} - } - return d, e - } - } - - return nil, &PathError{"stat", name, Ebadstat} -} - - -// Stat returns a FileInfo structure describing the named file and an error, if any. -func Stat(name string) (fi *FileInfo, err Error) { - d, err := dirstat(name) - if iserror(err) { - return nil, err - } - return fileInfoFromStat(new(FileInfo), d), err -} - -// Lstat returns the FileInfo structure describing the named file and an -// error, if any. If the file is a symbolic link (though Plan 9 does not have symbolic links), -// the returned FileInfo describes the symbolic link. Lstat makes no attempt to follow the link. -func Lstat(name string) (fi *FileInfo, err Error) { - d, err := dirstat(name) - if iserror(err) { - return nil, err - } - return fileInfoFromStat(new(FileInfo), d), err -} |