From ec46ef5a5c4fe3acbcc496dbc9a9109cbbdafa13 Mon Sep 17 00:00:00 2001 From: Ryszard Glab Date: Mon, 17 Apr 2000 13:33:16 +0000 Subject: [PATCH] ChangeLog 20000417-15:55 GMT+1 --- harbour/ChangeLog | 5 +++++ harbour/source/rtl/diskspac.c | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 58814964a7..9ba79b5b7a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,8 @@ +20000417-15:55 GMT+1 Ryszard Glab + + *source/rtl/diskspac.c + *added support for U*ix like systems + 20000417-15:27 GMT+3 Chen Kedem * source/lang/msghe862.c * source/lang/msghewin.c diff --git a/harbour/source/rtl/diskspac.c b/harbour/source/rtl/diskspac.c index c6f1163c0f..ac0c43e799 100644 --- a/harbour/source/rtl/diskspac.c +++ b/harbour/source/rtl/diskspac.c @@ -47,6 +47,10 @@ #include "hbapierr.h" #include "hbapifs.h" +#if defined( HB_OS_UNIX ) + #include +#endif + /* NOTE: The second parameter is a Harbour extension, check fileio.ch for the possible values. */ @@ -318,6 +322,38 @@ HB_FUNC( DISKSPACE ) } } +#elif defined(HB_OS_UNIX) + { + /* NOTE: U*ix like file systems don't use drive letters */ + HB_SYMBOL_UNUSED( uiDrive ); + if( ISCHAR( 1 ) ) + { + struct statfs sf; + + statfs( hb_parc( 1 ), &sf ); + + switch( uiType ) + { + case HB_DISK_AVAIL: + dSpace = ( double ) sf.f_bavail * ( double ) sf.f_bsize; + break; + + case HB_DISK_FREE: + dSpace = ( double ) sf.f_bfree * ( double ) sf.f_bsize; + break; + + case HB_DISK_USED: + dSpace = ( double ) ( sf.f_blocks - sf.f_bfree ) * + ( double ) sf.f_bsize; + break; + + case HB_DISK_TOTAL: + dSpace = ( double ) sf.f_blocks * ( double ) sf.f_bsize; + break; + } + } + } + #else {