// Copyright 2009 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" // An operating-system independent representation of Unix data structures. // OS-specific routines in this directory convert the OS-local versions to these. // Getpagesize returns the underlying system's memory page size. func Getpagesize() int { return syscall.Getpagesize() } // A Dir describes a file and is returned by Stat, Fstat, and Lstat type Dir struct { Dev uint64; // device number of file system holding file. Ino uint64; // inode number. Nlink uint64; // number of hard links. Mode uint32; // permission and mode bits. Uid uint32; // user id of owner. Gid uint32; // group id of owner. Rdev uint64; // device type for special file. Size uint64; // length in bytes. Blksize uint64; // size of blocks, in bytes. Blocks uint64; // number of blocks allocated for file. Atime_ns uint64; // access time; nanoseconds since epoch. Mtime_ns uint64; // modified time; nanoseconds since epoch. Ctime_ns uint64; // status change time; nanoseconds since epoch. Name string; // name of file as presented to Open. FollowedSymlink bool; // followed a symlink to get this information } // IsFifo reports whether the Dir describes a FIFO file. func (dir *Dir) IsFifo() bool { return (dir.Mode & syscall.S_IFMT) == syscall.S_IFIFO } // IsChar reports whether the Dir describes a character special file. func (dir *Dir) IsChar() bool { return (dir.Mode & syscall.S_IFMT) == syscall.S_IFCHR } // IsDirectory reports whether the Dir describes a directory. func (dir *Dir) IsDirectory() bool { return (dir.Mode & syscall.S_IFMT) == syscall.S_IFDIR } // IsBlock reports whether the Dir describes a block special file. func (dir *Dir) IsBlock() bool { return (dir.Mode & syscall.S_IFMT) == syscall.S_IFBLK } // IsRegular reports whether the Dir describes a regular file. func (dir *Dir) IsRegular() bool { return (dir.Mode & syscall.S_IFMT) == syscall.S_IFREG } // IsSymlink reports whether the Dir describes a symbolic link. func (dir *Dir) IsSymlink() bool { return (dir.Mode & syscall.S_IFMT) == syscall.S_IFLNK } // IsSocket reports whether the Dir describes a socket. func (dir *Dir) IsSocket() bool { return (dir.Mode & syscall.S_IFMT) == syscall.S_IFSOCK } // Permission returns the file permission bits. func (dir *Dir) Permission() int { return int(dir.Mode & 0777) }