github.com/zxy12/go_duplicate_112_new@v0.0.0-20200807091221-747231827200/src/os/stat_unix.go (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris 6 7 package os 8 9 import ( 10 "syscall" 11 ) 12 13 // Stat returns the FileInfo structure describing file. 14 // If there is an error, it will be of type *PathError. 15 func (f *File) Stat() (FileInfo, error) { 16 if f == nil { 17 return nil, ErrInvalid 18 } 19 var fs fileStat 20 err := f.pfd.Fstat(&fs.sys) 21 if err != nil { 22 return nil, &PathError{"stat", f.name, err} 23 } 24 fillFileStatFromSys(&fs, f.name) 25 return &fs, nil 26 } 27 28 // statNolog stats a file with no test logging. 29 func statNolog(name string) (FileInfo, error) { 30 var fs fileStat 31 err := syscall.Stat(name, &fs.sys) 32 if err != nil { 33 return nil, &PathError{"stat", name, err} 34 } 35 fillFileStatFromSys(&fs, name) 36 return &fs, nil 37 } 38 39 // lstatNolog lstats a file with no test logging. 40 func lstatNolog(name string) (FileInfo, error) { 41 var fs fileStat 42 err := syscall.Lstat(name, &fs.sys) 43 if err != nil { 44 return nil, &PathError{"lstat", name, err} 45 } 46 fillFileStatFromSys(&fs, name) 47 return &fs, nil 48 }