+
+/* The worker for all scanf() type of functions. The pointer spec should point
+ to the introducing '%' of a conversion specifier. The status structure is to
+ be that of the current scanf() function, of which the member stream will be
+ preserved; n, i, and s will be updated; and all others will be trashed by
+ the function.
+ Returns a pointer to the first character not parsed as conversion specifier,
+ or NULL in case of error.
+ FIXME: Should distinguish between matching and input error
+*/
+const char * _PDCLIB_scan( const char * spec, struct _PDCLIB_status_t * status );
+
+/* Parsing any fopen() style filemode string into a number of flags. */
+unsigned int _PDCLIB_filemode( const char * mode );
+
+/* Sanity checking and preparing of read buffer, should be called first thing
+ by any stdio read-data function.
+ Returns 0 on success, EOF on error.
+ On error, EOF / error flags and errno are set appropriately.
+*/
+int _PDCLIB_prepread( struct _PDCLIB_file_t * stream );
+
+/* Sanity checking, should be called first thing by any stdio write-data
+ function.
+ Returns 0 on success, EOF on error.
+ On error, error flags and errno are set appropriately.
+*/
+int _PDCLIB_prepwrite( struct _PDCLIB_file_t * stream );
+
+/* Closing all streams on program exit */
+void _PDCLIB_closeall( void );
+
+/* -------------------------------------------------------------------------- */
+/* errno */
+/* -------------------------------------------------------------------------- */
+
+/* If PDCLib would call its error number "errno" directly, there would be no way
+ to catch its value from underlying system calls that also use it (i.e., POSIX
+ operating systems). That is why we use an internal name, providing a means to
+ access it through <errno.h>.
+*/
+extern int _PDCLIB_errno;
+
+/* A mechanism for delayed evaluation. (Not sure if this is really necessary, so
+ no detailed documentation on the "why".)
+*/
+int * _PDCLIB_errno_func( void ) _PDCLIB_nothrow;
+
+/* -------------------------------------------------------------------------- */
+/* <ctype.h> lookup tables */
+/* -------------------------------------------------------------------------- */
+
+#define _PDCLIB_CTYPE_ALPHA 1
+#define _PDCLIB_CTYPE_BLANK 2
+#define _PDCLIB_CTYPE_CNTRL 4
+#define _PDCLIB_CTYPE_GRAPH 8
+#define _PDCLIB_CTYPE_PUNCT 16
+#define _PDCLIB_CTYPE_SPACE 32
+#define _PDCLIB_CTYPE_LOWER 64
+#define _PDCLIB_CTYPE_UPPER 128
+#define _PDCLIB_CTYPE_DIGIT 256
+#define _PDCLIB_CTYPE_XDIGT 512
+
+struct _PDCLIB_ctype_t
+{
+ _PDCLIB_uint16_t flags;
+ unsigned char upper;
+ unsigned char lower;
+ unsigned char collation;
+};
+
+/* -------------------------------------------------------------------------- */
+/* mbstate_t */
+/* -------------------------------------------------------------------------- */
+
+struct _PDCLIB_mbstate_t {
+ _PDCLIB_uint32_t st[4];
+};
+
+#endif