libgo: update to go1.9
[official-gcc.git] / libgo / go / os / stat_unix.go
blob7855fbab1350ac3d5aa3e4ef95645393a2a0ded9
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.
5 // +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
7 package os
9 import (
10 "syscall"
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
19 var fs fileStat
20 err := f.pfd.Fstat(&fs.sys)
21 if err != nil {
22 return nil, &PathError{"stat", f.name, err}
24 fillFileStatFromSys(&fs, f.name)
25 return &fs, nil
28 // Stat returns a FileInfo describing the named file.
29 // If there is an error, it will be of type *PathError.
30 func Stat(name string) (FileInfo, error) {
31 var fs fileStat
32 err := syscall.Stat(name, &fs.sys)
33 if err != nil {
34 return nil, &PathError{"stat", name, err}
36 fillFileStatFromSys(&fs, name)
37 return &fs, nil
40 // Lstat returns a FileInfo describing the named file.
41 // If the file is a symbolic link, the returned FileInfo
42 // describes the symbolic link. Lstat makes no attempt to follow the link.
43 // If there is an error, it will be of type *PathError.
44 func Lstat(name string) (FileInfo, error) {
45 var fs fileStat
46 err := syscall.Lstat(name, &fs.sys)
47 if err != nil {
48 return nil, &PathError{"lstat", name, err}
50 fillFileStatFromSys(&fs, name)
51 return &fs, nil