LINUX.ORG.RU

Спотыкаюсь об конец файла.


0

0

QString ldm::loadFile ( QString fl )
{
QString s = 0;
char ch = 0;
int f = open ( fl, O_RDONLY );
if ( f > 0 )
{
while (1)
{
if ( read ( f, &ch, sizeof ( ch ) ) != sizeof ( ch ) ) break;
s+=ch;
}
}
close ( f );
return s;
}

При вызове описанной фнкции программа падает в сегфолт. Открывается /etc/passwd , при этом файл точно открывается. Возникает впечатление что функция спотыкаеца об конец файла. Что делать?

Заранее спасибо!!!

★★★★★

Извиняюсь, а open принимает QString в параметрах?
Я не знаю как устроен этот класс, но если б fl был обычный string из C++, то надо было б писать так

int f = open ( fl.c_str(), O_RDONLY );

Dead ★★★★
()

И еще маленькое замечание :)
if ( f > 0 )
по твоему open не может вернуть 0 в случае успеха ? ;)

Dead ★★★★
()
Ответ на: комментарий от nobody

Короче воспользвался QFile и QStrigList. Добавил небольшой прасер собсвенно ручной консрукции и получилось довольно интересно.
Замуил на нём обработку конфига от этой проги ну есессено обработка /etc/passwd.

Осалось только с проверкой пароля разобраться и с запуском оконного менеджера.
А далее только доработки и фиксы.

cyclon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.