| // 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 ( |
| "io/fs" |
| "syscall" |
| ) |
| |
| // Getpagesize returns the underlying system's memory page size. |
| func Getpagesize() int { return syscall.Getpagesize() } |
| |
| // File represents an open file descriptor. |
| // |
| // The methods of File are safe for concurrent use. |
| type File struct { |
| *file // os specific |
| } |
| |
| // A FileInfo describes a file and is returned by [Stat] and [Lstat]. |
| type FileInfo = fs.FileInfo |
| |
| // A FileMode represents a file's mode and permission bits. |
| // The bits have the same definition on all systems, so that |
| // information about files can be moved from one system |
| // to another portably. Not all bits apply to all systems. |
| // The only required bit is [ModeDir] for directories. |
| type FileMode = fs.FileMode |
| |
| // The defined file mode bits are the most significant bits of the [FileMode]. |
| // The nine least-significant bits are the standard Unix rwxrwxrwx permissions. |
| // The values of these bits should be considered part of the public API and |
| // may be used in wire protocols or disk representations: they must not be |
| // changed, although new bits might be added. |
| const ( |
| // The single letters are the abbreviations |
| // used by the String method's formatting. |
| ModeDir = fs.ModeDir // d: is a directory |
| ModeAppend = fs.ModeAppend // a: append-only |
| ModeExclusive = fs.ModeExclusive // l: exclusive use |
| ModeTemporary = fs.ModeTemporary // T: temporary file; Plan 9 only |
| ModeSymlink = fs.ModeSymlink // L: symbolic link |
| ModeDevice = fs.ModeDevice // D: device file |
| ModeNamedPipe = fs.ModeNamedPipe // p: named pipe (FIFO) |
| ModeSocket = fs.ModeSocket // S: Unix domain socket |
| ModeSetuid = fs.ModeSetuid // u: setuid |
| ModeSetgid = fs.ModeSetgid // g: setgid |
| ModeCharDevice = fs.ModeCharDevice // c: Unix character device, when ModeDevice is set |
| ModeSticky = fs.ModeSticky // t: sticky |
| ModeIrregular = fs.ModeIrregular // ?: non-regular file; nothing else is known about this file |
| |
| // Mask for the type bits. For regular files, none will be set. |
| ModeType = fs.ModeType |
| |
| ModePerm = fs.ModePerm // Unix permission bits, 0o777 |
| ) |
| |
| func (fs *fileStat) Name() string { return fs.name } |
| func (fs *fileStat) IsDir() bool { return fs.Mode().IsDir() } |
| |
| // SameFile reports whether fi1 and fi2 describe the same file. |
| // For example, on Unix this means that the device and inode fields |
| // of the two underlying structures are identical; on other systems |
| // the decision may be based on the path names. |
| // SameFile only applies to results returned by this package's [Stat]. |
| // It returns false in other cases. |
| func SameFile(fi1, fi2 FileInfo) bool { |
| fs1, ok1 := fi1.(*fileStat) |
| fs2, ok2 := fi2.(*fileStat) |
| if !ok1 || !ok2 { |
| return false |
| } |
| return sameFile(fs1, fs2) |
| } |