diff options
author | 2024-10-06 20:53:03 +0000 | |
---|---|---|
committer | 2024-10-06 20:53:03 +0000 | |
commit | bd1866ad8a860e1b6d43c7fc988cf8c346f19f33 (patch) | |
tree | 6726f95b30b73baa4e5a7feed5c0b41bf46116db /vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go | |
parent | [chore/themes] Tweak colors on new themes (#3397) (diff) | |
download | gotosocial-bd1866ad8a860e1b6d43c7fc988cf8c346f19f33.tar.xz |
update go-ffmpreg to v0.3.1 (pulls in latest wazero too) (#3398)
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go')
-rw-r--r-- | vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go index fdbf1fde0..1b6d5f3de 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go @@ -269,7 +269,7 @@ func (f *fsFile) Readdir(n int) (dirents []experimentalsys.Dirent, errno experim if f.reopenDir { // re-open the directory if needed. f.reopenDir = false - if errno = adjustReaddirErr(f, f.closed, f.reopen()); errno != 0 { + if errno = adjustReaddirErr(f, f.closed, f.rewindDir()); errno != 0 { return } } @@ -418,19 +418,25 @@ func seek(s io.Seeker, offset int64, whence int) (int64, experimentalsys.Errno) return newOffset, experimentalsys.UnwrapOSError(err) } -// reopenFile allows re-opening a file for reasons such as applying flags or -// directory iteration. -type reopenFile func() experimentalsys.Errno - -// compile-time check to ensure fsFile.reopen implements reopenFile. -var _ reopenFile = (*fsFile)(nil).reopen - -// reopen implements the same method as documented on reopenFile. -func (f *fsFile) reopen() experimentalsys.Errno { - _ = f.close() - var err error - f.file, err = f.fs.Open(f.name) - return experimentalsys.UnwrapOSError(err) +func (f *fsFile) rewindDir() experimentalsys.Errno { + // Reopen the directory to rewind it. + file, err := f.fs.Open(f.name) + if err != nil { + return experimentalsys.UnwrapOSError(err) + } + fi, err := file.Stat() + if err != nil { + return experimentalsys.UnwrapOSError(err) + } + // Can't check if it's still the same file, + // but is it still a directory, at least? + if !fi.IsDir() { + return experimentalsys.ENOTDIR + } + // Only update f on success. + _ = f.file.Close() + f.file = file + return 0 } // readdirFile allows masking the `Readdir` function on os.File. |