+ if ( _PDCLIB_prepwrite( stream ) == EOF )
+ {
+ return EOF;
+ }
+ while ( *s != '\0' )
+ {
+ /* Unbuffered and line buffered streams get flushed when fputs() does
+ write the terminating end-of-line. All streams get flushed if the
+ buffer runs full.
+ */
+ stream->buffer[ stream->bufidx++ ] = *s;
+ /* TODO: Should IOLBF flush on \n, or the correct EOL sequence of the system? */
+ if ( ( stream->bufidx == stream->bufsize )
+ || ( ( stream->status & _IOLBF ) && *s == '\n' ) )
+ {
+ if ( _PDCLIB_flushbuffer( stream ) == EOF )
+ {
+ return EOF;
+ }
+ }
+ ++s;
+ }
+ if ( stream->status & _IONBF )
+ {
+ if ( _PDCLIB_flushbuffer( stream ) == EOF )
+ {
+ return EOF;
+ }
+ }
+ return 0;
+}