aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2026-11-01 04:02:32 +0100
committerJavier <dev.git@javispedro.com>2026-11-01 04:02:32 +0100
commitda550acda776107b9505290d2e37eb465a90a5a1 (patch)
treead3e5683e48e9ced0a8c3925b71ea7fac82602f3
parentbd13e615c3d2a4bdb10742e9b1a6d140233e63cf (diff)
downloadchu-da550acda776107b9505290d2e37eb465a90a5a1.tar.gz
chu-da550acda776107b9505290d2e37eb465a90a5a1.zip
map more error types
-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;