#define _PDCLIB_FBIN 128u
/* Internal flags, made to fit the same status field as the flags above. */
-#define _PDCLIB_WROTELAST 256u
-#define _PDCLIB_LIBBUFFER 512u
-#define _PDCLIB_VIRGINSTR 1024u
-#define _PDCLIB_ERRORFLAG 2048u
-#define _PDCLIB_EOFFLAG 4096u
+#define _PDCLIB_LIBBUFFER 512u
+#define _PDCLIB_VIRGINSTR 1024u
+#define _PDCLIB_ERRORFLAG 2048u
+#define _PDCLIB_EOFFLAG 4096u
+#define _PDCLIB_WIDESTREAM 8192u
+#define _PDCLIB_BYTESTREAM 16384u
struct _PDCLIB_file_t
{
_PDCLIB_fpos_t position; /* file position indicator */
char * buffer; /* file buffer */
_PDCLIB_size_t bufsize; /* size of buffer */
- _PDCLIB_size_t bufidx; /* pointer into buffer */
+ _PDCLIB_size_t bufidx; /* index to point of action in buffer */
+ _PDCLIB_size_t bufend; /* index to end of pre-read buffer */
unsigned int status; /* misc. status bits */
- /*mbstate_t mbstate; multibyte parse state - TODO: Unmask. */
struct _PDCLIB_file_t * next; /* provisions for linked list handling */
};
/* Parsing any fopen() style filemode string into a number of flags. */
unsigned int _PDCLIB_filemode( const char * mode );
+
+/* Writing out unwritten buffers to file. Returns 0 if successful, EOF if error
+ occured. Sets error flag of stream in case of error.
+ */
+int _PDCLIB_fflush( struct _PDCLIB_file_t * stream );