github.com/tetratelabs/wazero@v1.2.1/internal/sysfs/dir.go (about)

     1  package sysfs
     2  
     3  import (
     4  	"io"
     5  	"syscall"
     6  
     7  	"github.com/tetratelabs/wazero/internal/fsapi"
     8  	"github.com/tetratelabs/wazero/internal/platform"
     9  )
    10  
    11  func adjustReaddirErr(f fsapi.File, isClosed bool, err error) syscall.Errno {
    12  	if err == io.EOF {
    13  		return 0 // e.g. Readdir on darwin returns io.EOF, but linux doesn't.
    14  	} else if errno := platform.UnwrapOSError(err); errno != 0 {
    15  		errno = dirError(f, isClosed, errno)
    16  		// Ignore errors when the file was closed or removed.
    17  		switch errno {
    18  		case syscall.EIO, syscall.EBADF: // closed while open
    19  			return 0
    20  		case syscall.ENOENT: // Linux error when removed while open
    21  			return 0
    22  		}
    23  		return errno
    24  	}
    25  	return 0
    26  }