annotate libgo/go/os/stat_dragonfly.go @ 143:76e1cf5455ef

add cbc_gc test
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 19:24:05 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // Copyright 2009 The Go Authors. All rights reserved.
kono
parents:
diff changeset
2 // Use of this source code is governed by a BSD-style
kono
parents:
diff changeset
3 // license that can be found in the LICENSE file.
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 package os
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 import (
kono
parents:
diff changeset
8 "syscall"
kono
parents:
diff changeset
9 "time"
kono
parents:
diff changeset
10 )
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 func fillFileStatFromSys(fs *fileStat, name string) {
kono
parents:
diff changeset
13 fs.name = basename(name)
kono
parents:
diff changeset
14 fs.size = fs.sys.Size
kono
parents:
diff changeset
15 fs.modTime = timespecToTime(fs.sys.Mtim)
kono
parents:
diff changeset
16 fs.mode = FileMode(fs.sys.Mode & 0777)
kono
parents:
diff changeset
17 switch fs.sys.Mode & syscall.S_IFMT {
kono
parents:
diff changeset
18 case syscall.S_IFBLK:
kono
parents:
diff changeset
19 fs.mode |= ModeDevice
kono
parents:
diff changeset
20 case syscall.S_IFCHR:
kono
parents:
diff changeset
21 fs.mode |= ModeDevice | ModeCharDevice
kono
parents:
diff changeset
22 case syscall.S_IFDIR:
kono
parents:
diff changeset
23 fs.mode |= ModeDir
kono
parents:
diff changeset
24 case syscall.S_IFIFO:
kono
parents:
diff changeset
25 fs.mode |= ModeNamedPipe
kono
parents:
diff changeset
26 case syscall.S_IFLNK:
kono
parents:
diff changeset
27 fs.mode |= ModeSymlink
kono
parents:
diff changeset
28 case syscall.S_IFREG:
kono
parents:
diff changeset
29 // nothing to do
kono
parents:
diff changeset
30 case syscall.S_IFSOCK:
kono
parents:
diff changeset
31 fs.mode |= ModeSocket
kono
parents:
diff changeset
32 }
kono
parents:
diff changeset
33 if fs.sys.Mode&syscall.S_ISGID != 0 {
kono
parents:
diff changeset
34 fs.mode |= ModeSetgid
kono
parents:
diff changeset
35 }
kono
parents:
diff changeset
36 if fs.sys.Mode&syscall.S_ISUID != 0 {
kono
parents:
diff changeset
37 fs.mode |= ModeSetuid
kono
parents:
diff changeset
38 }
kono
parents:
diff changeset
39 if fs.sys.Mode&syscall.S_ISVTX != 0 {
kono
parents:
diff changeset
40 fs.mode |= ModeSticky
kono
parents:
diff changeset
41 }
kono
parents:
diff changeset
42 }
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 func timespecToTime(ts syscall.Timespec) time.Time {
kono
parents:
diff changeset
45 return time.Unix(ts.Sec, ts.Nsec)
kono
parents:
diff changeset
46 }
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 // For testing.
kono
parents:
diff changeset
49 func atime(fi FileInfo) time.Time {
kono
parents:
diff changeset
50 return timespecToTime(fi.Sys().(*syscall.Stat_t).Atim)
kono
parents:
diff changeset
51 }