mirror of
https://github.com/aaru-dps/fstester.git
synced 2025-12-16 19:24:39 +00:00
Add missing definitions for Borland C++ 2.0.
This commit is contained in:
@@ -27,10 +27,13 @@ Copyright (C) 2011-2021 Natalia Portillo
|
||||
|
||||
#if defined(__WATCOM__)
|
||||
#include <direct.h>
|
||||
#define __dos_mkdir(a) mkdir(a)
|
||||
#define __dos_mkdir(path) mkdir(path)
|
||||
#elif defined(__DJGPP__)
|
||||
#include <sys/stat.h>
|
||||
#define __dos_mkdir(path) mkdir(path, 0)
|
||||
#elif defined(__TURBOC__)
|
||||
#include <dir.h>
|
||||
#define __dos_mkdir(path) mkdir(path)
|
||||
#endif
|
||||
|
||||
#if defined(__WATCOM__)
|
||||
@@ -69,6 +72,30 @@ unsigned int _dos_getdiskfree_ex(unsigned int drive, struct diskfree_ex_t* disks
|
||||
#define MINUTE(t) ((t & 0x07E0) >> 5)
|
||||
#define SECOND(t) ((t & 0x001F) << 1)
|
||||
|
||||
#ifndef ENOMEM
|
||||
#define ENOMEN 12
|
||||
#endif
|
||||
|
||||
#ifndef ENOSYS
|
||||
#define ENOSYS 38
|
||||
#endif
|
||||
|
||||
#ifndef EINVAL
|
||||
#define EINVAL 22
|
||||
#endif
|
||||
|
||||
// Seems these were defined starting in Borland C++ 3.0
|
||||
#if defined(__BORLANDC__) && __BORLANDC__ <= 0x200
|
||||
#include <io.h>
|
||||
|
||||
#define _dos_setfileattr(path, attrib) _chmod(path, 1, attrib)
|
||||
#define _dos_close(handle) _close(handle)
|
||||
#define _dos_setdrive(drivep, ndrives) setdisk(drivep)
|
||||
|
||||
unsigned _dos_write(int handle, void far* buf, unsigned len, unsigned* nwritten);
|
||||
unsigned _dos_creat(const char* path, int attrib, int* handlep);
|
||||
unsigned _dos_creatnew(const char* path, int attrib, int* handlep);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -34,12 +34,20 @@ Copyright (C) 2011-2021 Natalia Portillo
|
||||
|
||||
void GetVolumeInfo(const char* path, size_t* clusterSize)
|
||||
{
|
||||
char driveNo = path[0] - '@';
|
||||
struct diskfree_t oldFreeSpace;
|
||||
char driveNo = path[0] - '@';
|
||||
#ifdef __TURBOC__
|
||||
struct dfree oldFreeSpace;
|
||||
#else
|
||||
struct diskfree_t oldFreeSpace;
|
||||
#endif
|
||||
struct diskfree_ex_t freeSpace;
|
||||
unsigned int rc;
|
||||
|
||||
#ifdef __TURBOC__
|
||||
memset(&oldFreeSpace, 0, sizeof(struct dfree));
|
||||
#else
|
||||
memset(&oldFreeSpace, 0, sizeof(struct diskfree_t));
|
||||
#endif
|
||||
memset(&freeSpace, 0, sizeof(struct diskfree_ex_t));
|
||||
|
||||
if(driveNo > 32) driveNo -= 32;
|
||||
@@ -50,11 +58,21 @@ void GetVolumeInfo(const char* path, size_t* clusterSize)
|
||||
{
|
||||
if(errno == ENOSYS)
|
||||
{
|
||||
#ifdef __TURBOC__
|
||||
getdfree(driveNo, &oldFreeSpace);
|
||||
freeSpace.sectorsPerCluster = oldFreeSpace.df_sclus;
|
||||
freeSpace.freeClusters = oldFreeSpace.df_avail;
|
||||
freeSpace.bytesPerSector = oldFreeSpace.df_bsec;
|
||||
freeSpace.totalClusters = oldFreeSpace.df_total;
|
||||
|
||||
rc = oldFreeSpace.df_sclus == 0xFFFF;
|
||||
#else
|
||||
rc = _dos_getdiskfree(driveNo, &oldFreeSpace);
|
||||
freeSpace.sectorsPerCluster = oldFreeSpace.sectors_per_cluster;
|
||||
freeSpace.freeClusters = oldFreeSpace.avail_clusters;
|
||||
freeSpace.bytesPerSector = oldFreeSpace.bytes_per_sector;
|
||||
freeSpace.totalClusters = oldFreeSpace.total_clusters;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user