aboutsummaryrefslogtreecommitdiff
path: root/dos
diff options
context:
space:
mode:
Diffstat (limited to 'dos')
-rw-r--r--dos/chud.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/dos/chud.c b/dos/chud.c
index f3b0beb..18663bd 100644
--- a/dos/chud.c
+++ b/dos/chud.c
@@ -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;