From 81b0db33ca6fa6167aa0ba39ea767f56606e2a67 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 6 Apr 2021 04:13:45 +0100 Subject: [PATCH] Add _dos_write, _dos_creat and _dos_creatnew functions for Borland C++ <= 2.0. --- setter/src/dos/dos.c | 60 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/setter/src/dos/dos.c b/setter/src/dos/dos.c index f8d24c6..ee19325 100644 --- a/setter/src/dos/dos.c +++ b/setter/src/dos/dos.c @@ -28,6 +28,11 @@ Copyright (C) 2011-2021 Natalia Portillo #include #include #include +#elif defined(__TURBOC__) +#include +#include +#include +#include #elif defined(__DJGPP__) #include #include @@ -38,7 +43,7 @@ Copyright (C) 2011-2021 Natalia Portillo unsigned int _dos_getdiskfree_ex(unsigned int drive, struct diskfree_ex_t* diskspace) { -#if defined(__WATCOM__) +#if defined(__WATCOM__) || defined(__TURBOC__) char drivePath[4]; union REGS regs; struct SREGS sregs; @@ -133,3 +138,56 @@ unsigned int _dos_getdiskfree_ex(unsigned int drive, struct diskfree_ex_t* disks return -1; #endif } + +#if defined(__BORLANDC__) && __BORLANDC__ <= 0x200 +unsigned _dos_write(int handle, void far* buf, unsigned len, unsigned* nwritten) +{ + int ret; + + ret = _write(handle, buf, len); + + if(ret == -1) + { + errno = EBADF; + return _doserrno; + } + + *nwritten = ret; + + return 0; +} + +unsigned _dos_creat(const char* path, int attrib, int* handlep) +{ + int ret; + + ret = _creat(path, attrib); + + if(ret == -1) + { + *handlep = 0; + return _doserrno; + } + + *handlep = ret; + + return 0; +} + +unsigned _dos_creatnew(const char* path, int attrib, int* handlep) +{ + int ret; + + ret = creatnew(path, attrib); + + if(ret == -1) + { + *handlep = 0; + return _doserrno; + } + + *handlep = ret; + + return 0; +} +#endif \ No newline at end of file