already so it will be taken into account when the deepestmost recursion
does the prefix / padding stuff.
*/
- ++(status->this);
+ ++(status->current);
if ( ( value / status->base ) != 0 )
{
/* More digits to be done - recurse deeper */
}
}
{
- size_t prec_pads = ( status->prec > status->this ) ? ( status->prec - status->this ) : 0;
+ size_t prec_pads = ( status->prec > status->current ) ? ( status->prec - status->current ) : 0;
if ( ! ( status->flags & ( E_minus | E_zero ) ) )
{
/* Space padding is only done if no zero padding or left alignment
I've ever perpetrated. Greetings to Samface, DevL, and all
sceners at Breakpoint 2006.
*/
- size_t characters = preidx + ( ( status->this > status->prec ) ? status->this : status->prec );
+ size_t characters = preidx + ( ( status->current > status->prec ) ? status->current : status->prec );
if ( status->width > characters )
{
for ( size_t i = 0; i < status->width - characters; ++i )
++(status->i);
} while ( 0 );
*/
- ++(status->this);
+ ++(status->current);
}
}
}
while ( preface[ preidx ] != '\0' )
{
DELIVER( preface[ preidx++ ] );
- ++(status->this);
+ ++(status->current);
}
if ( ( ! ( status->flags & E_minus ) ) && ( status->flags & E_zero ) )
{
/* If field is not left aligned, and zero padding is requested, do
so.
*/
- while ( status->this < status->width )
+ while ( status->current < status->width )
{
DELIVER( '0' );
- ++(status->this);
+ ++(status->current);
}
}
/* Do the precision padding if necessary. */
/* Initializing status structure */
status->flags = 0;
status->base = 0;
- status->this = 0;
+ status->current = 0;
status->width = 0;
status->prec = 0;
value = (uintmax_t)va_arg( status->arg, size_t );
break;
}
- ++(status->this);
+ ++(status->current);
if ( ( value / status->base ) != 0 )
{
int2base( (intmax_t)(value / status->base), status );
}
if ( status->flags & E_minus )
{
- while ( status->this < status->width )
+ while ( status->current < status->width )
{
DELIVER( ' ' );
- ++(status->this);
+ ++(status->current);
}
}
if ( status->i >= status->n )
static int testprintf( char * buffer, size_t n, const char * format, ... )
{
- /* Members: base, flags, n, i, this, s, width, prec, stream, arg */
+ /* Members: base, flags, n, i, current, s, width, prec, stream, arg */
struct _PDCLIB_status_t status;
status.base = 0;
status.flags = 0;
status.n = n;
status.i = 0;
- status.this = 0;
+ status.current = 0;
status.s = buffer;
status.width = 0;
status.prec = 0;
if ( rc != EOF )
{
++(status->i);
- ++(status->this);
+ ++(status->current);
}
return rc;
}
--(status->s);
}
--(status->i);
- --(status->this);
+ --(status->current);
}
/* Initializing status structure */
status->flags = 0;
status->base = -1;
- status->this = 0;
+ status->current = 0;
status->width = 0;
status->prec = 0;
status->width = 1;
}
/* reading until width reached or input exhausted */
- while ( ( status->this < status->width ) &&
+ while ( ( status->current < status->width ) &&
( ( rc = GET( status ) ) != EOF ) )
{
*(c++) = rc;
case 's':
{
char * c = va_arg( status->arg, char * );
- while ( ( status->this < status->width ) &&
+ while ( ( status->current < status->width ) &&
( ( rc = GET( status ) ) != EOF ) )
{
if ( isspace( rc ) )
} while ( *endspec != ']' );
// read according to scanlist, equiv. to %s above
char * c = va_arg( status->arg, char * );
- while ( ( status->this < status->width ) &&
+ while ( ( status->current < status->width ) &&
( ( rc = GET( status ) ) != EOF ) )
{
if ( negative_scanlist )
uintmax_t value = 0; /* absolute value read */
bool prefix_parsed = false;
int sign = 0;
- while ( ( status->this < status->width ) &&
+ while ( ( status->current < status->width ) &&
( ( rc = GET( status ) ) != EOF ) )
{
if ( isspace( rc ) )
else
{
/* leading whitespace not counted against width */
- status->this--;
+ status->current--;
}
}
else if ( ! sign )
{
/* starts with zero, so it might be a prefix. */
/* check what follows next (might be 0x...) */
- if ( ( status->this < status->width ) &&
+ if ( ( status->current < status->width ) &&
( ( rc = GET( status ) ) != EOF ) )
{
if ( tolower( rc ) == 'x' )
int vfprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, va_list arg )
{
/* TODO: This function should interpret format as multibyte characters. */
- /* Members: base, flags, n, i, this, s, width, prec, stream, arg */
+ /* Members: base, flags, n, i, current, s, width, prec, stream, arg */
struct _PDCLIB_status_t status;
status.base = 0;
status.flags = 0;
status.n = SIZE_MAX;
status.i = 0;
- status.this = 0;
+ status.current = 0;
status.s = NULL;
status.width = 0;
status.prec = 0;
status.flags = 0;
status.n = 0;
status.i = 0;
- status.this = 0;
+ status.current = 0;
status.s = NULL;
status.width = 0;
status.prec = 0;
int vsnprintf( char * _PDCLIB_restrict s, size_t n, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg )
{
/* TODO: This function should interpret format as multibyte characters. */
- /* Members: base, flags, n, i, this, s, width, prec, stream, arg */
+ /* Members: base, flags, n, i, current, s, width, prec, stream, arg */
struct _PDCLIB_status_t status;
status.base = 0;
status.flags = 0;
status.n = n;
status.i = 0;
- status.this = 0;
+ status.current = 0;
status.s = s;
status.width = 0;
status.prec = 0;
/* Status structure required by _PDCLIB_print(). */
struct _PDCLIB_status_t
{
- int base; /* base to which the value shall be converted */
+ int base; /* base to which the value shall be converted */
_PDCLIB_int_fast32_t flags; /* flags and length modifiers */
- _PDCLIB_size_t n; /* print: maximum characters to be written */
- /* scan: number matched conversion specifiers */
- _PDCLIB_size_t i; /* number of characters read/written */
- _PDCLIB_size_t this; /* chars read/written in the CURRENT conversion */
- char * s; /* *sprintf(): target buffer */
- /* *sscanf(): source string */
- _PDCLIB_size_t width; /* specified field width */
- _PDCLIB_size_t prec; /* specified field precision */
+ _PDCLIB_size_t n; /* print: maximum characters to be written */
+ /* scan: number matched conversion specifiers */
+ _PDCLIB_size_t i; /* number of characters read/written */
+ _PDCLIB_size_t current;/* chars read/written in the CURRENT conversion */
+ char * s; /* *sprintf(): target buffer */
+ /* *sscanf(): source string */
+ _PDCLIB_size_t width; /* specified field width */
+ _PDCLIB_size_t prec; /* specified field precision */
struct _PDCLIB_file_t * stream; /* *fprintf() / *fscanf() stream */
- _PDCLIB_va_list arg; /* argument stack */
+ _PDCLIB_va_list arg; /* argument stack */
};
/* -------------------------------------------------------------------------- */