- Str255 volumeName ;
- XVolumeParam pb ;
-
- wxMacStringToPascal( p , volumeName ) ;
- OSErr err = XGetVolumeInfoNoName( volumeName , 0 , &pb ) ;
- if ( err == noErr ) {
- if ( pTotal ) {
- (*pTotal) = wxLongLong( pb.ioVTotalBytes ) ;
- }
- if ( pFree ) {
- (*pFree) = wxLongLong( pb.ioVFreeBytes ) ;
- }
+ OSErr err = noErr ;
+
+ FSRef fsRef ;
+ err = wxMacPathToFSRef( p , &fsRef ) ;
+ if ( noErr == err )
+ {
+ FSVolumeRefNum vRefNum ;
+ err = FSGetVRefNum( &fsRef , &vRefNum ) ;
+ if ( noErr == err )
+ {
+ UInt64 freeBytes , totalBytes ;
+ err = FSGetVInfo( vRefNum , NULL , &freeBytes , &totalBytes ) ;
+ if ( noErr == err )
+ {
+ if ( pTotal )
+ *pTotal = wxLongLong( totalBytes ) ;
+ if ( pFree )
+ *pFree = wxLongLong( freeBytes ) ;
+ }
+ }