URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8537
[ Назад ]

Исходное сообщение
"Visual C++ "

Отправлено pavlinux , 04-Дек-09 22:48 
Есть вот такой код, написан на 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);
    }
}


Содержание

Сообщения в этом обсуждении
"Visual C++ "
Отправлено parad , 05-Дек-09 01:40 
man opendir

"Visual C++ "
Отправлено pavlinux , 05-Дек-09 01:49 
>man opendir

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\USER>man opendir
"man" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

------------------

Мне надо портировать эту хрень, и ещё 50.000 строк в УНИХ,
а прежде надо увидеть как там всё работает. dirent.h в MFC нету...



"Visual C++ "
Отправлено GreenHouse , 05-Дек-09 13:16 
>[оверквотинг удален]
>
>C:\Documents and Settings\USER>man opendir
>"man" не является внутренней или внешней
>командой, исполняемой программой или пакетным файлом.
>
>------------------
>
>Мне надо портировать эту хрень, и ещё 50.000 строк в УНИХ,
>а прежде надо увидеть как там всё работает. dirent.h в MFC нету...
>

Ну значит юзай MSDN, там есть описание всех виндовскиф функций
http://msdn.microsoft.com/ru-ru/default.aspx


"Visual C++ "
Отправлено Vitaly_loki , 05-Дек-09 15:53 
>[оверквотинг удален]
>   }
>  }
>  closedir(d);
> }
>    if (( m_cur_buf > m_max_buf )&&( m_max_buf!=0 ))
> {
>  m_restore_file.PubDelFirstFile();
>  disc_usage(path);
> }
>}

Честно говоря, С++ тут не увидел... голый Си только
________
Сорри, std::string не заметил... Предыдущий ответ верный... надо полистать MSDN на сайте мелких и мягких. Там должно быть описание.


"Visual C++ "
Отправлено pavlinux , 05-Дек-09 16:10 
> надо полистать MSDN на сайте мелких и мягких.
> Там должно быть описание.

Нет там ни..уя, ламерюги там одни ...
И ещё сука, POSIX совместимыми себя зовут ...


Надо качнуть тут http://www.softagalleria.net/dirent.php
Либо руками расписать свой



"Visual C++ "
Отправлено GreenHouse , 05-Дек-09 16:44 
>Нет там ни..уя, ламерюги там одни ...
>И ещё сука, POSIX совместимыми себя зовут ...
>
>
>Надо качнуть тут http://www.softagalleria.net/dirent.php
>Либо руками расписать свой

Windows POSIX-совместимая - это смешно!!!
Если надо написать приложение которое работает с файловой системой под винду и одновременно под юниксы то самым рациональным пешением я вижу использование Boost.


"Visual C++ "
Отправлено pavlinux , 06-Дек-09 18:12 
>[оверквотинг удален]
>>И ещё сука, POSIX совместимыми себя зовут ...
>>
>>
>>Надо качнуть тут http://www.softagalleria.net/dirent.php
>>Либо руками расписать свой
>
>Windows POSIX-совместимая - это смешно!!!
>Если надо написать приложение которое работает с файловой системой под винду и
>одновременно под юниксы то самым рациональным пешением я вижу использование Boost.
>

Да не.... Мне надо посмотреть, работает ли оно вообще, и конвертнуть всё это дело в UNIX

Кстати, нет ли в природе конвертера VCPRO -> Makefile


"Visual C++ "
Отправлено DeadMustdie , 05-Дек-09 20:05 
При работе в среде Win32, да ещё при использовании MSVC, следует вместо opendir/readir/closedir применять системные вызовы FindFirstFile/FindNextFile/CloseHandle.

Microsoft никогда не стремилась к совместимости своих ОС с POSIX, и полный набор стандартных вызовов POSIX в Win32 отсутствует. Есть костыли разной степени развитости (MinGW, Cygwin), но их применение сопряжено с использованием GCC как компилятора.


"Visual C++ "
Отправлено аноним , 07-Дек-09 17:48 
>Компиляция выдаёт ошибку - не определен тип 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


"Visual C++ "
Отправлено pavlinux , 07-Дек-09 18:17 
>[оверквотинг удален]
>другой форум. Если под 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