From da550acda776107b9505290d2e37eb465a90a5a1 Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 1 Nov 2026 04:02:32 +0100 Subject: map more error types --- dos/chud.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'dos') 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; -- cgit v1.2.3