Use type switch for syscallErr
This commit is contained in:
		@@ -11,58 +11,64 @@ func syscallErr(err error) syscall.Errno {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch err {
 | 
			
		||||
	case blefs.FSError{0x02}: // filesystem error
 | 
			
		||||
		return syscall.EIO // TODO
 | 
			
		||||
	case blefs.FSError{0x05}: // read-only filesystem
 | 
			
		||||
		return syscall.EROFS
 | 
			
		||||
	case blefs.FSError{0x03}: // no such file
 | 
			
		||||
		return syscall.ENOENT
 | 
			
		||||
	case blefs.FSError{0x04}: // protocol error
 | 
			
		||||
		return syscall.EPROTO
 | 
			
		||||
	case blefs.FSError{-5}: // input/output error
 | 
			
		||||
		return syscall.EIO
 | 
			
		||||
	case blefs.FSError{-84}: // filesystem is corrupted
 | 
			
		||||
		return syscall.ENOTRECOVERABLE // TODO
 | 
			
		||||
	case blefs.FSError{-2}: // no such directory entry
 | 
			
		||||
		return syscall.ENOENT
 | 
			
		||||
	case blefs.FSError{-17}: // entry already exists
 | 
			
		||||
		return syscall.EEXIST
 | 
			
		||||
	case blefs.FSError{-20}: // entry is not a directory
 | 
			
		||||
		return syscall.ENOTDIR
 | 
			
		||||
	case blefs.FSError{-39}: // directory is not empty
 | 
			
		||||
		return syscall.ENOTEMPTY
 | 
			
		||||
	case blefs.FSError{-9}: // bad file number
 | 
			
		||||
		return syscall.EBADF
 | 
			
		||||
	case blefs.FSError{-27}: // file is too large
 | 
			
		||||
		return syscall.EFBIG
 | 
			
		||||
	case blefs.FSError{-22}: // invalid parameter
 | 
			
		||||
		return syscall.EINVAL
 | 
			
		||||
	case blefs.FSError{-28}: // no space left on device
 | 
			
		||||
		return syscall.ENOSPC
 | 
			
		||||
	case blefs.FSError{-12}: // no more memory available
 | 
			
		||||
		return syscall.ENOMEM
 | 
			
		||||
	case blefs.FSError{-61}: // no attr available
 | 
			
		||||
		return syscall.ENODATA // TODO
 | 
			
		||||
	case blefs.FSError{-36}: // file name is too long
 | 
			
		||||
		return syscall.ENAMETOOLONG
 | 
			
		||||
	case blefs.ErrFileNotExists: // file does not exist
 | 
			
		||||
		return syscall.ENOENT
 | 
			
		||||
	case blefs.ErrFileReadOnly: // file is read only
 | 
			
		||||
		return syscall.EACCES
 | 
			
		||||
	case blefs.ErrFileWriteOnly: // file is write only
 | 
			
		||||
		return syscall.EACCES
 | 
			
		||||
	case blefs.ErrInvalidOffset: // invalid file offset
 | 
			
		||||
		return syscall.EFAULT // TODO
 | 
			
		||||
	case blefs.ErrOffsetChanged: // offset has already been changed
 | 
			
		||||
		return syscall.ESPIPE
 | 
			
		||||
	case blefs.ErrReadOpen: // only one file can be opened for reading at a time
 | 
			
		||||
		return syscall.ENFILE
 | 
			
		||||
	case blefs.ErrWriteOpen: // only one file can be opened for writing at a time
 | 
			
		||||
		return syscall.ENFILE
 | 
			
		||||
	case blefs.ErrNoRemoveRoot: // refusing to remove root directory
 | 
			
		||||
		return syscall.EPERM
 | 
			
		||||
	switch err := err.(type) {
 | 
			
		||||
	case blefs.FSError:
 | 
			
		||||
		switch err.Code {
 | 
			
		||||
		case 0x02: // filesystem error
 | 
			
		||||
			return syscall.EIO // TODO
 | 
			
		||||
		case 0x05: // read-only filesystem
 | 
			
		||||
			return syscall.EROFS
 | 
			
		||||
		case 0x03: // no such file
 | 
			
		||||
			return syscall.ENOENT
 | 
			
		||||
		case 0x04: // protocol error
 | 
			
		||||
			return syscall.EPROTO
 | 
			
		||||
		case -5: // input/output error
 | 
			
		||||
			return syscall.EIO
 | 
			
		||||
		case -84: // filesystem is corrupted
 | 
			
		||||
			return syscall.ENOTRECOVERABLE // TODO
 | 
			
		||||
		case -2: // no such directory entry
 | 
			
		||||
			return syscall.ENOENT
 | 
			
		||||
		case -17: // entry already exists
 | 
			
		||||
			return syscall.EEXIST
 | 
			
		||||
		case -20: // entry is not a directory
 | 
			
		||||
			return syscall.ENOTDIR
 | 
			
		||||
		case -39: // directory is not empty
 | 
			
		||||
			return syscall.ENOTEMPTY
 | 
			
		||||
		case -9: // bad file number
 | 
			
		||||
			return syscall.EBADF
 | 
			
		||||
		case -27: // file is too large
 | 
			
		||||
			return syscall.EFBIG
 | 
			
		||||
		case -22: // invalid parameter
 | 
			
		||||
			return syscall.EINVAL
 | 
			
		||||
		case -28: // no space left on device
 | 
			
		||||
			return syscall.ENOSPC
 | 
			
		||||
		case -12: // no more memory available
 | 
			
		||||
			return syscall.ENOMEM
 | 
			
		||||
		case -61: // no attr available
 | 
			
		||||
			return syscall.ENODATA // TODO
 | 
			
		||||
		case -36: // file name is too long
 | 
			
		||||
			return syscall.ENAMETOOLONG
 | 
			
		||||
		}
 | 
			
		||||
	default:
 | 
			
		||||
		switch err {
 | 
			
		||||
		case blefs.ErrFileNotExists: // file does not exist
 | 
			
		||||
			return syscall.ENOENT
 | 
			
		||||
		case blefs.ErrFileReadOnly: // file is read only
 | 
			
		||||
			return syscall.EACCES
 | 
			
		||||
		case blefs.ErrFileWriteOnly: // file is write only
 | 
			
		||||
			return syscall.EACCES
 | 
			
		||||
		case blefs.ErrInvalidOffset: // invalid file offset
 | 
			
		||||
			return syscall.EFAULT // TODO
 | 
			
		||||
		case blefs.ErrOffsetChanged: // offset has already been changed
 | 
			
		||||
			return syscall.ESPIPE
 | 
			
		||||
		case blefs.ErrReadOpen: // only one file can be opened for reading at a time
 | 
			
		||||
			return syscall.ENFILE
 | 
			
		||||
		case blefs.ErrWriteOpen: // only one file can be opened for writing at a time
 | 
			
		||||
			return syscall.ENFILE
 | 
			
		||||
		case blefs.ErrNoRemoveRoot: // refusing to remove root directory
 | 
			
		||||
			return syscall.EPERM
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return syscall.EIO // TODO
 | 
			
		||||
	return syscall.EIO
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user