comparison compat.c @ 99:02bbe1f397bb

Fixed precision problems with drivesize and drivefree on FreeBSD.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 06 Aug 2002 05:22:19 +0000
parents c0388006bb0d
children bb2b01c3122f
comparison
equal deleted inserted replaced
98:c0388006bb0d 99:02bbe1f397bb
208 return 0; 208 return 0;
209 } 209 }
210 210
211 /* Return in K to avoid big problems exceeding an 211 /* Return in K to avoid big problems exceeding an
212 unsigned long when no 64bit integers are available */ 212 unsigned long when no 64bit integers are available */
213 #if (defined(__IBMC__) && __IBMC__ < 360) || (defined(__WIN32__) && !defined(__CYGWIN32__)) 213 #if (defined(__IBMC__) && __IBMC__ < 360)
214 unsigned long drivefree(int drive) 214 unsigned long drivefree(int drive)
215 #else 215 #else
216 unsigned long long drivefree(int drive) 216 unsigned long long drivefree(int drive)
217 #endif 217 #endif
218 { 218 {
254 entries = getmntinfo (&fsp, MNT_NOWAIT); 254 entries = getmntinfo (&fsp, MNT_NOWAIT);
255 255
256 for (; entries-- > 0; fsp++) 256 for (; entries-- > 0; fsp++)
257 { 257 {
258 if(index == drive) 258 if(index == drive)
259 return (fsp->f_bsize * fsp->f_bavail) / 1024; 259 return fsp->f_bsize * (fsp->f_bavail / 1024);
260 index++; 260 index++;
261 } 261 }
262 return 0; 262 return 0;
263 #elif defined(__sun__) 263 #elif defined(__sun__)
264 FILE *fp = fopen("/etc/mnttab", "r"); 264 FILE *fp = fopen("/etc/mnttab", "r");
317 #endif 317 #endif
318 } 318 }
319 319
320 /* Return in K to avoid big problems exceeding an 320 /* Return in K to avoid big problems exceeding an
321 unsigned long when no 64bit integers are available */ 321 unsigned long when no 64bit integers are available */
322 #if (defined(__IBMC__) && __IBMC__ < 360) || (defined(__WIN32__) && !defined(__CYGWIN32__)) 322 #if (defined(__IBMC__) && __IBMC__ < 360)
323 unsigned long drivesize(int drive) 323 unsigned long drivesize(int drive)
324 #else 324 #else
325 unsigned long long drivesize(int drive) 325 unsigned long long drivesize(int drive)
326 #endif 326 #endif
327 { 327 {
363 entries = getmntinfo (&fsp, MNT_NOWAIT); 363 entries = getmntinfo (&fsp, MNT_NOWAIT);
364 364
365 for (; entries-- > 0; fsp++) 365 for (; entries-- > 0; fsp++)
366 { 366 {
367 if(index == drive) 367 if(index == drive)
368 return (fsp->f_bsize * fsp->f_blocks) / 1024; 368 return fsp->f_bsize * (fsp->f_blocks / 1024);
369 index++; 369 index++;
370 } 370 }
371 return 0; 371 return 0;
372 #elif defined(__sun__) 372 #elif defined(__sun__)
373 FILE *fp = fopen("/etc/mnttab", "r"); 373 FILE *fp = fopen("/etc/mnttab", "r");