X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2F_PDCLIB%2Fprint.c;h=d47a48d977f18e78e76dbc2c3712100f6ecfec8b;hb=f63c745c3dde325a2260f2f8b998e2b24bb6419e;hp=fdf398245a460aac1c99512369314a26872c33eb;hpb=6e4032b4d356021eeee8ca50cc9a0b78039fb92a;p=pdclib diff --git a/functions/_PDCLIB/print.c b/functions/_PDCLIB/print.c index fdf3982..d47a48d 100644 --- a/functions/_PDCLIB/print.c +++ b/functions/_PDCLIB/print.c @@ -40,7 +40,20 @@ n - pointer to maximum number of characters to be delivered in this call s - the buffer into which the character shall be delivered */ -#define DELIVER( x ) do { if ( status->i < status->n ) { if ( status->stream != NULL ) putc( x, status->stream ); else status->s[status->i] = x; } ++(status->i); } while ( 0 ) +#define DELIVER( x ) \ +do { \ + if ( status->i < status->n ) { \ + if ( status->stream != NULL ) { \ + status->stream->buffer[status->stream->bufidx++] = x; \ + if ( ( status->stream->bufidx == status->stream->bufsize ) \ + || ( ( status->stream->status & _IOLBF ) && ( x == '\n' ) ) \ + || ( status->stream->status & _IONBF ) ) \ + fflush( status->stream ); \ + } else \ + status->s[status->i] = x; \ + } \ + ++(status->i); \ +} while ( 0 ) /* This function recursively converts a given integer value to a character stream. The conversion is done under the control of a given status struct @@ -116,6 +129,26 @@ static void int2base( intmax_t value, struct _PDCLIB_status_t * status ) for ( int i = 0; i < status->width - characters; ++i ) { DELIVER( ' ' ); + /* + do + { + if ( status->i < status->n ) + { + if ( status->stream != 0 ) + do + { + status->stream->buffer[status->stream->bufidx++] = (char)' ', + if ( ( status->stream->bufidx == status->stream->bufsize ) + || ( ( status->stream->status & 2 ) && (char)' ' == '\n' ) + || ( status->stream->status & 4 ) ) + fflush( status->stream ) + } while (0), + ' '; + else status->s[status->i] = ' '; + } + ++(status->i); + } while ( 0 ); + */ ++(status->this); } }