Mercurial > dwindows
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"); |