summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/sys/stat.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/sys/stat.go')
-rw-r--r--vendor/github.com/tetratelabs/wazero/sys/stat.go105
1 files changed, 0 insertions, 105 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/sys/stat.go b/vendor/github.com/tetratelabs/wazero/sys/stat.go
deleted file mode 100644
index 328885545..000000000
--- a/vendor/github.com/tetratelabs/wazero/sys/stat.go
+++ /dev/null
@@ -1,105 +0,0 @@
-package sys
-
-import "io/fs"
-
-// Inode is the file serial number, or zero if unknown.
-//
-// Any constant value will invalidate functions that use this for
-// equivalence, such as os.SameFile (Stat_t.Ino).
-//
-// When zero is returned by a `readdir`, some compilers will attempt to
-// get a non-zero value with `lstat`. Those using this for darwin's definition
-// of `getdirentries` conflate zero `d_fileno` with a deleted file, so skip the
-// entry. See /RATIONALE.md for more on this.
-type Inode = uint64
-
-// ^-- Inode is a type alias to consolidate documentation and aid in reference
-// searches. While only Stat_t is exposed publicly at the moment, this is used
-// internally for Dirent and several function return values.
-
-// EpochNanos is a timestamp in epoch nanoseconds, or zero if unknown.
-//
-// This defines epoch time the same way as Walltime, except this value is
-// packed into an int64. Common conversions are detailed in the examples.
-type EpochNanos = int64
-
-// Stat_t is similar to syscall.Stat_t, except available on all operating
-// systems, including Windows.
-//
-// # Notes
-//
-// - This is used for WebAssembly ABI emulating the POSIX `stat` system call.
-// See https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html
-// - Fields here are required for WebAssembly ABI including wasip1
-// (a.k.a. wasix) and wasi-filesystem (a.k.a. wasip2).
-// - This isn't the same as syscall.Stat_t because wazero supports Windows,
-// which doesn't have that type. runtime.GOOS that has this already also
-// have inconsistent field lengths, which complicates wasm binding.
-// - Use NewStat_t to create this from an existing fs.FileInfo.
-// - For portability, numeric fields are 64-bit when at least one platform
-// defines it that large.
-type Stat_t struct {
- // Dev is the device ID of device containing the file.
- Dev uint64
-
- // Ino is the file serial number, or zero if not available. See Inode for
- // more details including impact returning a zero value.
- Ino Inode
-
- // Mode is the same as Mode on fs.FileInfo containing bits to identify the
- // type of the file (fs.ModeType) and its permissions (fs.ModePerm).
- Mode fs.FileMode
-
- // Nlink is the number of hard links to the file.
- //
- // Note: This value is platform-specific and often at least one. Linux will
- // return 1+N for a directory, where BSD (like Darwin) return 2+N, which
- // includes the dot entry.
- Nlink uint64
-
- // Size is the length in bytes for regular files. For symbolic links, this
- // is length in bytes of the pathname contained in the symbolic link.
- Size int64
-
- // Atim is the last data access timestamp in epoch nanoseconds.
- Atim EpochNanos
-
- // Mtim is the last data modification timestamp in epoch nanoseconds.
- Mtim EpochNanos
-
- // Ctim is the last file status change timestamp in epoch nanoseconds.
- Ctim EpochNanos
-}
-
-// NewStat_t fills a new Stat_t from `info`, including any runtime.GOOS-specific
-// details from fs.FileInfo `Sys`. When `Sys` is already a *Stat_t, it is
-// returned as-is.
-//
-// # Notes
-//
-// - When already in fs.FileInfo `Sys`, Stat_t must be a pointer.
-// - When runtime.GOOS is "windows" Stat_t.Ino will be zero.
-// - When fs.FileInfo `Sys` is nil or unknown, some fields not in fs.FileInfo
-// are defaulted: Stat_t.Atim and Stat_t.Ctim are set to `ModTime`, and
-// are set to ModTime and Stat_t.Nlink is set to 1.
-func NewStat_t(info fs.FileInfo) Stat_t {
- // Note: Pointer, not val, for parity with Go, which sets *syscall.Stat_t
- if st, ok := info.Sys().(*Stat_t); ok {
- return *st
- }
- return statFromFileInfo(info)
-}
-
-func defaultStatFromFileInfo(info fs.FileInfo) Stat_t {
- st := Stat_t{}
- st.Ino = 0
- st.Dev = 0
- st.Mode = info.Mode()
- st.Nlink = 1
- st.Size = info.Size()
- mtim := info.ModTime().UnixNano() // Set all times to the mod time
- st.Atim = mtim
- st.Mtim = mtim
- st.Ctim = mtim
- return st
-}