Fixed a crash on systems with disks that have a block size larger than 1MB

This commit is contained in:
Klaus Schmidinger 2002-05-01 16:22:41 +02:00
parent eefd2b88f1
commit f492153edb
3 changed files with 10 additions and 4 deletions

View File

@ -317,3 +317,7 @@ Dimitrios Dimitrakos <mail@dimitrios.de>
Marcus Kuba <marcus@kuba4u.de>
for reporting a bug in the unit of the "SVDRP timeout" setup parameter
Ulrich Petri <ulope@gmx.de>
for his help in debugging a crash on systems with disks that have a block size
larger than 1MB

View File

@ -1228,3 +1228,5 @@ Video Disk Recorder Revision History
- Added Greek language texts (thanks to Dimitrios Dimitrakos).
- Fixed the unit of the "SVDRP timeout" setup parameter (thanks to Marcus Kuba
for reporting this one).
- Fixed a crash on systems with disks that have a block size larger than 1MB
(thanks to Ulrich Petri for helping to debug this one).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: tools.c 1.62 2002/03/31 20:51:06 kls Exp $
* $Id: tools.c 1.63 2002/05/01 16:20:30 kls Exp $
*/
#include "tools.h"
@ -251,10 +251,10 @@ int FreeDiskSpaceMB(const char *Directory, int *UsedMB)
int Free = 0;
struct statfs statFs;
if (statfs(Directory, &statFs) == 0) {
int blocksPerMeg = 1024 * 1024 / statFs.f_bsize;
double blocksPerMeg = 1024.0 * 1024.0 / statFs.f_bsize;
if (UsedMB)
*UsedMB = (statFs.f_blocks - statFs.f_bfree) / blocksPerMeg;
Free = statFs.f_bavail / blocksPerMeg;
*UsedMB = int((statFs.f_blocks - statFs.f_bfree) / blocksPerMeg);
Free = int(statFs.f_bavail / blocksPerMeg);
}
else
LOG_ERROR_STR(Directory);