RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : fdopen не открывает (handle==HFILE?1:0)


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : saa
To : saa
Subj : fdopen не открывает (handle==HFILE?1:0)

> Не мог бы кто-нибудь просветить, где прочитать, какая разница между HFILE hfile в оси и int handle в сях, и как из первого сделать второе?
...
> Компилятор WC++ 10.0

Как всегда, прочитать про это негде, зато его же родной дебуггер показал что к чему. Проблема решена, и теперь началась новая жизнь.

Если кому интересно, надо вставить в программу что-то типа

#ifdef __WATCOMC__
#include "assert.h"
#include "stdio.h"
extern "C" int __NFiles;
extern "C" void __SetIOMode(int,int);
void ClibIoModeInform (int hn, int mode)
{
assert (hn < __NFiles);
__SetIOMode(hn,mode);
}
#else
inline void ClibIoModeInform (int, int) {}
#endif

а затем после каждого открытия нового хендла извещать об этом C-библиотеку:

...
assert ( DosOpen ("tmp2", & hf, & ttt, 0, 0,
OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS,
OPEN_SHARE_DENYREADWRITE | OPEN_ACCESS_READWRITE, 0) == 0 );

ClibIoModeInform (hf, _READ|_BINARY); // вот это та волшебная команда.

f = fdopen (hf,"rb");
...

PS. нет ли возражений против таких специфических сообщений?

Mon 03 Dec 2001 18:39 Mozilla/2.02 (X11; I)




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.