+bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree)
+{
+#if defined(HAVE_STATFS) || defined(HAVE_STATVFS)
+ // the case to "char *" is needed for AIX 4.3
+ wxStatFs fs;
+ if ( statfs((char *)(const char*)path.fn_str(), &fs) != 0 )
+ {
+ wxLogSysError( wxT("Failed to get file system statistics") );
+
+ return FALSE;
+ }
+
+ // under Solaris we also have to use f_frsize field instead of f_bsize
+ // which is in general a multiple of f_frsize
+#ifdef HAVE_STATVFS
+ wxLongLong blockSize = fs.f_frsize;
+#else // HAVE_STATFS
+ wxLongLong blockSize = fs.f_bsize;
+#endif // HAVE_STATVFS/HAVE_STATFS
+
+ if ( pTotal )
+ {
+ *pTotal = wxLongLong(fs.f_blocks) * blockSize;
+ }
+
+ if ( pFree )
+ {
+ *pFree = wxLongLong(fs.f_bavail) * blockSize;
+ }
+
+ return TRUE;
+#else // !HAVE_STATFS && !HAVE_STATVFS
+ return FALSE;
+#endif // HAVE_STATFS
+}
+