package sys
import (
experimentalsys "github.com/tetratelabs/wazero/experimental/sys"
"github.com/tetratelabs/wazero/internal/fsapi"
"github.com/tetratelabs/wazero/sys"
)
var _ experimentalsys .File = (*lazyDir )(nil )
type lazyDir struct {
experimentalsys .DirFile
fs experimentalsys .FS
f experimentalsys .File
}
func (d *lazyDir ) Dev () (uint64 , experimentalsys .Errno ) {
if f , ok := d .file (); !ok {
return 0 , experimentalsys .EBADF
} else {
return f .Dev ()
}
}
func (d *lazyDir ) Ino () (sys .Inode , experimentalsys .Errno ) {
if f , ok := d .file (); !ok {
return 0 , experimentalsys .EBADF
} else {
return f .Ino ()
}
}
func (d *lazyDir ) IsDir () (bool , experimentalsys .Errno ) {
if f , ok := d .file (); !ok {
return false , experimentalsys .EBADF
} else {
return f .IsDir ()
}
}
func (d *lazyDir ) IsAppend () bool {
return false
}
func (d *lazyDir ) SetAppend (bool ) experimentalsys .Errno {
return experimentalsys .EISDIR
}
func (d *lazyDir ) Seek (offset int64 , whence int ) (newOffset int64 , errno experimentalsys .Errno ) {
if f , ok := d .file (); !ok {
return 0 , experimentalsys .EBADF
} else {
return f .Seek (offset , whence )
}
}
func (d *lazyDir ) Stat () (sys .Stat_t , experimentalsys .Errno ) {
if f , ok := d .file (); !ok {
return sys .Stat_t {}, experimentalsys .EBADF
} else {
return f .Stat ()
}
}
func (d *lazyDir ) Readdir (n int ) (dirents []experimentalsys .Dirent , errno experimentalsys .Errno ) {
if f , ok := d .file (); !ok {
return nil , experimentalsys .EBADF
} else {
return f .Readdir (n )
}
}
func (d *lazyDir ) Sync () experimentalsys .Errno {
if f , ok := d .file (); !ok {
return experimentalsys .EBADF
} else {
return f .Sync ()
}
}
func (d *lazyDir ) Datasync () experimentalsys .Errno {
if f , ok := d .file (); !ok {
return experimentalsys .EBADF
} else {
return f .Datasync ()
}
}
func (d *lazyDir ) Utimens (atim , mtim int64 ) experimentalsys .Errno {
if f , ok := d .file (); !ok {
return experimentalsys .EBADF
} else {
return f .Utimens (atim , mtim )
}
}
func (d *lazyDir ) file () (experimentalsys .File , bool ) {
if f := d .f ; d .f != nil {
return f , true
}
var errno experimentalsys .Errno
d .f , errno = d .fs .OpenFile ("." , experimentalsys .O_RDONLY , 0 )
switch errno {
case 0 :
return d .f , true
case experimentalsys .ENOENT :
return nil , false
default :
panic (errno )
}
}
func (d *lazyDir ) Close () experimentalsys .Errno {
f := d .f
if f == nil {
return 0
}
return f .Close ()
}
func (d *lazyDir ) IsNonblock () bool {
return false
}
func (d *lazyDir ) SetNonblock (bool ) experimentalsys .Errno {
return experimentalsys .EISDIR
}
func (d *lazyDir ) Poll (fsapi .Pflag , int32 ) (ready bool , errno experimentalsys .Errno ) {
return false , experimentalsys .ENOSYS
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .