Minor type fixes to DOS.

This commit is contained in:
2021-03-11 04:56:07 +00:00
parent 8944c844c4
commit 3f35c03934
11 changed files with 152 additions and 115 deletions

View File

@@ -35,19 +35,19 @@ Copyright (C) 2011-2021 Natalia Portillo
#include <string.h>
#elif defined(__DJGPP__)
#include <dpmi.h>
#include <sys/movedata.h>
#include <go32.h>
#include <sys/movedata.h>
#endif
#include "dos.h"
unsigned int _dos_getdiskfree_ex(unsigned int drive, struct diskfree_ex_t *diskspace)
unsigned int _dos_getdiskfree_ex(unsigned int drive, struct diskfree_ex_t* diskspace)
{
#if defined(__WATCOM__)
char drivePath[4];
union REGS regs;
struct SREGS sregs;
struct diskfree_ex_t *copy;
char drivePath[4];
union REGS regs;
struct SREGS sregs;
struct diskfree_ex_t* copy;
copy = malloc(sizeof(struct diskfree_ex_t));
@@ -82,7 +82,7 @@ unsigned int _dos_getdiskfree_ex(unsigned int drive, struct diskfree_ex_t *disks
else if(regs.w.cflag)
{
free(copy);
errno = EINVAL;
errno = EINVAL;
_doserrno = regs.w.ax;
return -1;
}
@@ -90,12 +90,12 @@ unsigned int _dos_getdiskfree_ex(unsigned int drive, struct diskfree_ex_t *disks
memcpy(diskspace, copy, sizeof(struct diskfree_ex_t));
free(copy);
errno = 0;
errno = 0;
_doserrno = regs.w.ax;
return 0;
#elif defined(__DJGPP__)
char drivePath[4];
char drivePath[4];
__dpmi_regs regs;
drivePath[0] = (drive & 0xFF) + '@';
@@ -106,32 +106,30 @@ unsigned int _dos_getdiskfree_ex(unsigned int drive, struct diskfree_ex_t *disks
// Use transferBuffer[0] for drivePath and transferBuffer[16] for diskfree_ex_t
dosmemput(drivePath, 0, __tb);
regs.x.ds =
regs.x.ax = 0x7303;
regs.x.ds = __tb >> 4;
regs.x.ds = __tb >> 4;
regs.x.dx = __tb & 0x0F;
regs.x.es = (__tb + 16) >> 4;
regs.x.es = (__tb + 16) >> 4;
regs.x.di = (__tb + 16) & 0x0F;
regs.x.cx = sizeof(struct diskfree_ex_t);
__dpmi_int (0x21, &regs);
__dpmi_int(0x21, &regs);
if(regs.h.al == 0 && !(regs.x.flags & 1))
{
errno = ENOSYS;
return -1;
}
else if(regs.x.flags & 1)
{
errno = EINVAL;
_doserrno = regs.x.ax;
return -1;
}
if(regs.h.al == 0 && !(regs.x.flags & 1))
{
errno = ENOSYS;
return -1;
}
else if(regs.x.flags & 1)
{
errno = EINVAL;
_doserrno = regs.x.ax;
return -1;
}
dosmemget(__tb + 16, sizeof(struct diskfree_ex_t), diskspace);
errno = 0;
errno = 0;
_doserrno = regs.x.ax;
return 0;