Есть вот такой код, написан на VC++ 8.0Компиляция выдаёт ошибку - не определен тип DIR
функции opendir(), readdir()
и S_ISDIRгде они там живут???
void restore_db_t::disc_usage(const std::string &path)
{
DIR *d;
m_cur_buf = 0;// Считаем размер в дирректории
d = opendir(path.c_str());
if (d)
{
struct dirent *de;
while ( (de=readdir(d)) )
{
struct stat info;
int err;
std::string full_name = path+"/"+de->d_name;
err = stat( full_name.c_str() ,&info);
if ( (!err)&&(!S_ISDIR(info.st_mode)) )
{
m_cur_buf += info.st_size;
}
else
{
;
}
}
closedir(d);
}
if (( m_cur_buf > m_max_buf )&&( m_max_buf!=0 ))
{
m_restore_file.PubDelFirstFile();
disc_usage(path);
}
}
man opendir
>man opendirMicrosoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.C:\Documents and Settings\USER>man opendir
"man" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.------------------
Мне надо портировать эту хрень, и ещё 50.000 строк в УНИХ,
а прежде надо увидеть как там всё работает. dirent.h в MFC нету...
>[оверквотинг удален]
>
>C:\Documents and Settings\USER>man opendir
>"man" не является внутренней или внешней
>командой, исполняемой программой или пакетным файлом.
>
>------------------
>
>Мне надо портировать эту хрень, и ещё 50.000 строк в УНИХ,
>а прежде надо увидеть как там всё работает. dirent.h в MFC нету...
>Ну значит юзай MSDN, там есть описание всех виндовскиф функций
http://msdn.microsoft.com/ru-ru/default.aspx
>[оверквотинг удален]
> }
> }
> closedir(d);
> }
> if (( m_cur_buf > m_max_buf )&&( m_max_buf!=0 ))
> {
> m_restore_file.PubDelFirstFile();
> disc_usage(path);
> }
>}Честно говоря, С++ тут не увидел... голый Си только
________
Сорри, std::string не заметил... Предыдущий ответ верный... надо полистать MSDN на сайте мелких и мягких. Там должно быть описание.
> надо полистать MSDN на сайте мелких и мягких.
> Там должно быть описание.Нет там ни..уя, ламерюги там одни ...
И ещё сука, POSIX совместимыми себя зовут ...
Надо качнуть тут http://www.softagalleria.net/dirent.php
Либо руками расписать свой
>Нет там ни..уя, ламерюги там одни ...
>И ещё сука, POSIX совместимыми себя зовут ...
>
>
>Надо качнуть тут http://www.softagalleria.net/dirent.php
>Либо руками расписать свойWindows POSIX-совместимая - это смешно!!!
Если надо написать приложение которое работает с файловой системой под винду и одновременно под юниксы то самым рациональным пешением я вижу использование Boost.
>[оверквотинг удален]
>>И ещё сука, POSIX совместимыми себя зовут ...
>>
>>
>>Надо качнуть тут http://www.softagalleria.net/dirent.php
>>Либо руками расписать свой
>
>Windows POSIX-совместимая - это смешно!!!
>Если надо написать приложение которое работает с файловой системой под винду и
>одновременно под юниксы то самым рациональным пешением я вижу использование Boost.
>Да не.... Мне надо посмотреть, работает ли оно вообще, и конвертнуть всё это дело в UNIX
Кстати, нет ли в природе конвертера VCPRO -> Makefile
При работе в среде Win32, да ещё при использовании MSVC, следует вместо opendir/readir/closedir применять системные вызовы FindFirstFile/FindNextFile/CloseHandle.Microsoft никогда не стремилась к совместимости своих ОС с POSIX, и полный набор стандартных вызовов POSIX в Win32 отсутствует. Есть костыли разной степени развитости (MinGW, Cygwin), но их применение сопряжено с использованием GCC как компилятора.
>Компиляция выдаёт ошибку - не определен тип DIR
>функции opendir(), readdir()
>и S_ISDIRСобрать-то подо что надо, под *nix? Если под винду - то на другой форум. Если под nix, то:
man opendir, например:
SYNOPSIS
#include <sys/types.h>
#include <dirent.h>Соответвенно читаем маны и поделючаем нужные хидеры. Определение DIR - в dirent.h, определение S_ISDIR - в sys/stat.h
>[оверквотинг удален]
>другой форум. Если под nix, то:
>
>man opendir, например:
>
>SYNOPSIS
> #include <sys/types.h>
> #include <dirent.h>
>
>Соответвенно читаем маны и поделючаем нужные хидеры. Определение DIR - в dirent.h,
>определение S_ISDIR - в sys/stat.hЭто я знаю.
А вот венду со стороны программера видел в последний раз через SoftICE 2.6.2 (вроде), и Delphi 5.0