|
Ohne die OWL-Library komplett neu aufzubauen, können zunächst nur 128 Dateien gleichzeitig offen sein. Dazu muß eine neue Datei dem Projekt hinzugefügt werden, in der _NFILE_ auf den neuen Wert 128 gesetzt wird.
#include
#include
#include
#include <_nfile.h>
#undef _ NFILE_
#define _NFILE_ 128
Die nachfolgenden Zeilen sorgen dann dafür, daß der Startup-Code alles korrekt initialisiert:
extern void _RTLENTRY _init_handles(void);
extern void _RTLENTRY _init_streams(void);
#pragma startup _init_handles 4
#pragma startup _init_streams 5
unsigned _RTLENTRY _EXPDATA _nfile = _NFILE_;
unsigned int _RTLENTRY _openfd[_NFILE_] =
{
O_RDONLY | O_TEXT | O_DEVICE,
O_WRONLY | O_TEXT | O_DEVICE,
O_WRONLY | O_TEXT | O_DEVICE
};
unsigned int _RTLENTRY _pidtab[_NFILE_];
unsigned long _RTLENTRY _handles[_NFILE_];
#define _F_STDIN (_F_READ | _F_TERM | _F_LBUF)
#define _F_STDOUT (_F_WRIT | _F_TERM | _F_LBUF)
#define _F_STDERR (_F_WRIT | _F_TERM)
FILE _RTLENTRY _EXPDATA _streams [_NFILE_] =
{
{ NULL, NULL, 0, 0, 0, _F_STDIN, 0, 0, 0 },
{ NULL, NULL, 0, 0, 0, _F_STDOUT, 0, 1, 0 },
{ NULL, NULL, 0, 0, 0, _F_STDERR, 0, 2, 0 }
};
| Lösung |