Handle drive size for alias drives

This commit is contained in:
d0k3 2016-10-29 16:57:46 +02:00
parent 9c0e6153f0
commit 3c75c13880
2 changed files with 11 additions and 3 deletions

View File

@ -14,6 +14,8 @@ typedef struct {
FRESULT fx_open (FIL* fp, XFIL* xfp, const TCHAR* path, BYTE mode);
FRESULT fx_read (FIL* fp, XFIL* xfp, void* buff, UINT btr, UINT* br);
FRESULT fx_write (FIL* fp, XFIL* xfp, const void* buff, UINT btw, UINT* bw);
void dealias_path (TCHAR* alias, const TCHAR* path);
FRESULT fa_open (FIL* fp, const TCHAR* path, BYTE mode);
FRESULT fa_opendir (DIR* dp, const TCHAR* path);
FRESULT fa_stat (const TCHAR* path, FILINFO* fno);

View File

@ -98,6 +98,12 @@ int PathToNumFS(const char* path) {
return fsnum;
}
int PathToNumFSA(const char* path) {
char alias[256];
dealias_path(alias, path);
return PathToNumFS(alias);
}
bool IsSearchDrive(const char* path) {
return *search_pattern && *search_path && (strncmp(path, "Z:", 3) == 0);
}
@ -1213,7 +1219,7 @@ uint64_t GetFreeSpace(const char* path)
DWORD free_clusters;
FATFS *fs_ptr;
char fsname[4] = { '\0' };
int pdrv = PathToNumFS(path);
int pdrv = PathToNumFSA(path);
if (pdrv < 0) return 0;
snprintf(fsname, 3, "%i:", pdrv);
@ -1225,7 +1231,7 @@ uint64_t GetFreeSpace(const char* path)
uint64_t GetTotalSpace(const char* path)
{
int pdrv = PathToNumFS(path);
int pdrv = PathToNumFSA(path);
if (pdrv < 0) return 0;
return (uint64_t) (fs[pdrv].n_fatent - 2) * fs[pdrv].csize * _MAX_SS;
@ -1233,7 +1239,7 @@ uint64_t GetTotalSpace(const char* path)
uint64_t GetPartitionOffsetSector(const char* path)
{
int pdrv = PathToNumFS(path);
int pdrv = PathToNumFSA(path);
if (pdrv < 0) return -1;
return (uint64_t) fs[pdrv].volbase;