From bd13e615c3d2a4bdb10742e9b1a6d140233e63cf Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 1 Nov 2026 03:33:01 +0100 Subject: handle additional errors --- dos/chud.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'dos') diff --git a/dos/chud.c b/dos/chud.c index 498d97b..f3b0beb 100644 --- a/dos/chud.c +++ b/dos/chud.c @@ -98,9 +98,8 @@ static int ioctl_read_abs_sector(uint8_t drive, void *buffer, uint32_t sector, i regs.h.cl = CHUDISK_IOCTL_DISK_READ_ABS_SECTOR; regs.x.dx = FP_OFF(&ciod); - if (intdos(®s, ®s) == 0) { - return 0; - } else { + intdos(®s, ®s); + if (regs.x.cflag) { struct DOSERROR err; // Get the extended error from DOS, more useful than a simple EACCES // and translate to watcom's errno @@ -118,13 +117,19 @@ static int ioctl_read_abs_sector(uint8_t drive, void *buffer, uint32_t sector, i 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; + break; default: errno = EFAULT; break; } return -errno; + } else { + return 0; // No error } } -- cgit v1.2.3