crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Определить свободное место на диске, Платформозависимо (Mac OS)
fluffyMan2000
  опции профиля:
сообщение 14.10.2012, 17:39
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 39
Регистрация: 13.8.2012
Пользователь №: 3481

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день. Нужно при копировании файла узнать, хватит ли места на целевом диске.

нашел такую функцию. Здесь реализация виндовс\линукс. Нужно добавить реализацию под мак.

#ifdef _WIN32
   #include <windows.h>
#else // linux stuff
   #include <sys/vfs.h>
   #include <sys/stat.h>
#endif // _WIN32

bool getFreeTotalSpace(const QString& sDirPath,double& fTotal, double& fFree)
{
#ifdef _WIN32

   QString sCurDir = QDir::current().absPath();
   QDir::setCurrent( sDirPath );
   
   ULARGE_INTEGER free,total;
   bool bRes = ::GetDiskFreeSpaceExA( 0 , &free , &total , NULL );
   if ( !bRes ) return false;

   QDir::setCurrent( sCurDir );

   fFree = static_cast<double>( static_cast<__int64>(free.QuadPart) ) / fKB;
   fTotal = static_cast<double>( static_cast<__int64>(total.QuadPart) ) / fKB

#else //linux

   struct stat stst;
   struct statfs stfs;

   if ( ::stat(sDirPath.local8Bit(),&stst) == -1 ) return false;
   if ( ::statfs(sDirPath.local8Bit(),&stfs) == -1 ) return false;

   fFree = stfs.f_bavail * ( stst.st_blksize / fKB);
   fTotal = stfs.f_blocks * ( stst.st_blksize / fKB );

#endif // _WIN32

   return true;
}


отлично, только нужно еще и под MacOS добавить реализацию. подскажите, как это сделать. никогда с маком не сталкивался.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 8:52