diff options
Diffstat (limited to 'dos')
| -rw-r--r-- | dos/chud.c | 33 |
1 files changed, 31 insertions, 2 deletions
@@ -105,23 +105,52 @@ static int ioctl_read_abs_sector(uint8_t drive, void *buffer, uint32_t sector, i // and translate to watcom's errno switch (dosexterr(&err)) { case DOS_ERROR_INVALID_FUNCTION: + case DOS_ERROR_BAD_COMMAND: errno = EINVAL; break; case DOS_ERROR_FILE_NOT_FOUND: case DOS_ERROR_PATH_NOT_FOUND: + case DOS_ERROR_NO_MORE_FILES: errno = ENOENT; break; + case DOS_ERROR_NOT_ENOUGH_MEMORY: + errno = ENOMEM; + break; case DOS_ERROR_INVALID_DRIVE: + case DOS_ERROR_BAD_UNIT: errno = ENODEV; break; + case DOS_ERROR_INVALID_HANDLE: + errno = EBADF; + break; + case DOS_ERROR_BAD_FORMAT: + case DOS_ERROR_NOT_DOS_DISK: + errno = ENOEXEC; + break; + case DOS_ERROR_SEEK: + case DOS_ERROR_SECTOR_NOT_FOUND: + errno = ESPIPE; + break; + case DOS_ERROR_INVALID_DATA: + errno = ERANGE; + break; + case DOS_ERROR_NOT_READY: + errno = EAGAIN; + break; case DOS_ERROR_READ_FAULT: case DOS_ERROR_WRITE_FAULT: case DOS_ERROR_GEN_FAILURE: case DOS_ERROR_CRC: errno = EIO; break; - case DOS_ERROR_NOT_ENOUGH_MEMORY: - errno = ENOMEM; + case DOS_ERROR_ACCESS_DENIED: + errno = EACCES; + break; + case DOS_ERROR_HANDLE_DISK_FULL: + errno = ENOSPC; + break; + case DOS_ERROR_WRITE_PROTECT: + errno = EROFS; break; default: errno = EFAULT; |
