From 6bca4c041a243de1750f660aec7b386bdfce335e Mon Sep 17 00:00:00 2001 From: darkvater Date: Mon, 28 Mar 2005 13:30:51 +0000 Subject: (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me) --- unix.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'unix.c') diff --git a/unix.c b/unix.c index 5ab036852..93fbcc79d 100644 --- a/unix.c +++ b/unix.c @@ -300,28 +300,30 @@ char *FiosBrowseTo(const FiosItem *item) return NULL; } -// Get descriptive texts. -// Returns a path as well as a -// string describing the path. -StringID FiosGetDescText(const char **path) +/** + * Get descriptive texts. Returns the path and free space + * left on the device + * @param path string describing the path + * @param tfs total free space in megabytes, optional (can be NULL) + * @return StringID describing the path (free space or failure) + */ +StringID FiosGetDescText(const char **path, uint32 *tot) { + uint32 free = 0; *path = _fios_path[0] != '\0' ? _fios_path : "/"; #if defined(__linux__) { struct statvfs s; - if (statvfs(*path, &s) == 0) { - uint64 tot = (uint64)s.f_bsize * s.f_bavail; - SetDParam(0, (uint32)(tot >> 20)); - return STR_4005_BYTES_FREE; + if (statvfs(*path, &s) != 0) { + free = ((uint64)s.f_bsize * s.f_bavail) >> 20; } else return STR_4006_UNABLE_TO_READ_DRIVE; } -#else - SetDParam(0, 0); - return STR_4005_BYTES_FREE; #endif + if (tot != NULL) *tot = free; + return STR_4005_BYTES_FREE; } void FiosMakeSavegameName(char *buf, const char *name) -- cgit v1.2.3-70-g09d2