--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genericopenlibs/cstdlib/LINCSYS/REENT.H Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,139 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* WARNING: All identifiers here must begin with an underscore. This file is
+* included by stdio.h and others and we therefore must only use identifiers
+* in the namespace allotted to us.
+*
+*
+*/
+
+
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+
+#ifndef _SYS_REENT_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _SYS_REENT_H_
+
+#include <_ansi.h>
+#include <sys/stdio_t.h> /* _sFILE type */
+#include <time.h> /* for struct tm */
+
+struct _glue
+{
+ struct _glue *_next;
+ int _niobs;
+ struct __sFILE *_iobs;
+};
+
+/**
+atexit() support
+*/
+#define _ATEXIT_SIZE 32 /* must be at least 32 to guarantee ANSI conformance */
+
+struct _atexit {
+ struct _atexit *_next; /* next in list */
+ int _ind; /* next index in this table */
+ void (*_fns[_ATEXIT_SIZE])(void); /* the table itself */
+};
+
+
+/**
+struct _reent
+
+This structure contains *all* globals needed by the library.
+It's raison d'etre is to facilitate threads by making all library routines
+reentrant. IE: All state information is contained here.
+*/
+
+#define _ASCTIME_SIZE (26+8) /* 26 min, plus caution factor! */
+#define _MINNARROWBUFSIZE 100
+
+#ifdef __MWERKS__
+ #pragma warn_padding off
+#endif
+
+struct _reent
+{
+ /* local copy of errno */
+ int _errno;
+ struct __sFILE _sf[3]; /* first three file descriptors: stdin, stdout, stderr */
+
+ char *_scanpoint; /* used by strtok */
+ char _asctime[_ASCTIME_SIZE]; /* used by asctime */
+ struct tm _struct_tm; /* used by gmtime */
+ long _next[2]; /* used by rand/srand (64-bit seed for EPOC32) */
+ int _inc; /* used by tmpnam */
+ char _tmpnam[37]; /* used by tmpnam & inet_ntoa */
+ wchar_t _wtmpnam[37]; /* used by tmpnam & inet_ntoa */
+ void *_netdb; /* used by gethostbyaddr and similar netdb functions */
+
+ int _current_category; /* used by setlocale */
+ const char *_current_locale;
+
+ int __sdidinit; /* 1 means stdio has been init'd */
+
+ void (*__cleanup)(struct _reent *);
+
+ /* atexit stuff */
+ struct _atexit *_atexit; /* points to head of LIFO stack */
+ struct _atexit _atexit0; /* one guaranteed table, required by ANSI */
+
+ /* signal info */
+ void (**(_sig_func))();
+
+ struct _glue __sglue; /* root of glue chain for additional sFILE structures */
+
+ char **environ;
+ int environ_slots;
+
+ char* _pNarrowEnvBuffer;
+ int _NEBSize;
+
+ void *_system; /* Pointer to a C++ POSIX System object - Hands off! */
+};
+
+/**
+The struct _reent is managed on a per-thread basis by EPOC32, so there is no global
+variable _impure_pointer and everyone has to use _REENT (panics in the event of an
+error) or REENT2 (which returns a NULL pointer in the event of an error).
+*/
+IMPORT_C void _reclaim_reent (struct _reent*);
+IMPORT_C void _REENT_INIT (struct _reent*);
+IMPORT_C struct _reent* ImpurePtr (void);
+IMPORT_C struct _reent* ImpurePtr2 (void);
+IMPORT_C void _init_reent (struct _reent*,void*);
+
+/**
+Support for explicit release of all STDLIB resources belonging to this thread
+*/
+IMPORT_C void CloseSTDLIB();
+
+#define _REENT (ImpurePtr())
+#define _REENT2 (ImpurePtr2())
+#define __errno_r(ptr) ((ptr)->_errno)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_REENT_H_ */