The Go Programming Language

Source file src/pkg/os/stat_linux.go

     1	// Copyright 2009 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	package os
     6	
     7	import "syscall"
     8	
     9	func isSymlink(stat *syscall.Stat_t) bool {
    10		return stat.Mode&syscall.S_IFMT == syscall.S_IFLNK
    11	}
    12	
    13	func fileInfoFromStat(name string, fi *FileInfo, lstat, stat *syscall.Stat_t) *FileInfo {
    14		fi.Dev = stat.Dev
    15		fi.Ino = stat.Ino
    16		fi.Nlink = uint64(stat.Nlink)
    17		fi.Mode = stat.Mode
    18		fi.Uid = int(stat.Uid)
    19		fi.Gid = int(stat.Gid)
    20		fi.Rdev = stat.Rdev
    21		fi.Size = stat.Size
    22		fi.Blksize = int64(stat.Blksize)
    23		fi.Blocks = stat.Blocks
    24		fi.Atime_ns = syscall.TimespecToNsec(stat.Atim)
    25		fi.Mtime_ns = syscall.TimespecToNsec(stat.Mtim)
    26		fi.Ctime_ns = syscall.TimespecToNsec(stat.Ctim)
    27		fi.Name = basename(name)
    28		if isSymlink(lstat) && !isSymlink(stat) {
    29			fi.FollowedSymlink = true
    30		}
    31		return fi
    32	}

release.r60.3. Except as noted, this content is licensed under a Creative Commons Attribution 3.0 License.