X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2F_PDCLIB%2Fprint.c;h=9a30ca2446b0d332784fdecebfa7d12b0b55b94f;hb=15cd62244797b9aeb3279484f8e760778c52bc4e;hp=27b4bc26bab9b587ec755b6962d3be03eaa95e75;hpb=07810dbd8f3e21618208b923e293715774c80ade;p=pdclib diff --git a/functions/_PDCLIB/print.c b/functions/_PDCLIB/print.c index 27b4bc2..9a30ca2 100644 --- a/functions/_PDCLIB/print.c +++ b/functions/_PDCLIB/print.c @@ -1,5 +1,3 @@ -/* $Id$ */ - /* _PDCLIB_print( const char *, struct _PDCLIB_status_t * ) This file is part of the Public Domain C Library (PDCLib). @@ -12,29 +10,34 @@ #include #include +#ifndef REGTEST + /* Using an integer's bits as flags for both the conversion flags and length modifiers. */ /* FIXME: one too many flags to work on a 16-bit machine, join some (e.g. the width flags) into a combined field. */ -#define E_minus 1<<0 -#define E_plus 1<<1 -#define E_alt 1<<2 -#define E_space 1<<3 -#define E_zero 1<<4 -#define E_done 1<<5 -#define E_char 1<<6 -#define E_short 1<<7 -#define E_long 1<<8 -#define E_llong 1<<9 -#define E_intmax 1<<10 -#define E_size 1<<11 -#define E_ptrdiff 1<<12 -#define E_intptr 1<<13 -#define E_ldouble 1<<14 -#define E_lower 1<<15 -#define E_unsigned 1<<16 +#define E_minus (1<<0) +#define E_plus (1<<1) +#define E_alt (1<<2) +#define E_space (1<<3) +#define E_zero (1<<4) +#define E_done (1<<5) + +#define E_char (1<<6) +#define E_short (1<<7) +#define E_long (1<<8) +#define E_llong (1<<9) +#define E_intmax (1<<10) +#define E_size (1<<11) +#define E_ptrdiff (1<<12) +#define E_pointer (1<<13) + +#define E_ldouble (1<<14) + +#define E_lower (1<<15) +#define E_unsigned (1<<16) /* This macro delivers a given character to either a memory buffer or a stream, depending on the contents of 'status' (struct _PDCLIB_status_t). @@ -42,15 +45,15 @@ i - pointer to number of characters already delivered in this call n - pointer to maximum number of characters to be delivered in this call s - the buffer into which the character shall be delivered - TODO: ref. fputs() for a better way to buffer handling */ -#define DELIVER( x ) \ +#define PUT( x ) \ do { \ + int character = x; \ if ( status->i < status->n ) { \ if ( status->stream != NULL ) \ - putc( x, status->stream ); \ + putc( character, status->stream ); \ else \ - status->s[status->i] = x; \ + status->s[status->i] = character; \ } \ ++(status->i); \ } while ( 0 ) @@ -61,7 +64,7 @@ static void intformat( intmax_t value, struct _PDCLIB_status_t * status ) /* At worst, we need two prefix characters (hex prefix). */ char preface[3] = "\0"; size_t preidx = 0; - if ( ( status->flags & E_alt ) && ( status->base == 16 || status->base == 8 ) ) + if ( ( status->flags & E_alt ) && ( status->base == 16 || status->base == 8 ) && ( value != 0 ) ) { /* Octal / hexadecimal prefix for "%#" conversions */ preface[ preidx++ ] = '0'; @@ -104,7 +107,7 @@ static void intformat( intmax_t value, struct _PDCLIB_status_t * status ) { for ( size_t i = 0; i < status->width - characters; ++i ) { - DELIVER( ' ' ); + PUT( ' ' ); ++(status->current); } } @@ -113,7 +116,7 @@ static void intformat( intmax_t value, struct _PDCLIB_status_t * status ) preidx = 0; while ( preface[ preidx ] != '\0' ) { - DELIVER( preface[ preidx++ ] ); + PUT( preface[ preidx++ ] ); ++(status->current); } if ( ( ! ( status->flags & E_minus ) ) && ( status->flags & E_zero ) ) @@ -123,14 +126,14 @@ static void intformat( intmax_t value, struct _PDCLIB_status_t * status ) */ while ( status->current < status->width ) { - DELIVER( '0' ); + PUT( '0' ); ++(status->current); } } /* Do the precision padding if necessary. */ for ( size_t i = 0; i < prec_pads; ++i ) { - DELIVER( '0' ); + PUT( '0' ); } } } @@ -175,12 +178,12 @@ static void int2base( intmax_t value, struct _PDCLIB_status_t * status ) if ( status->flags & E_lower ) { /* Lowercase letters. Same array used for strto...(). */ - DELIVER( _PDCLIB_digits[ digit ] ); + PUT( _PDCLIB_digits[ digit ] ); } else { /* Uppercase letters. Array only used here, only 0-F. */ - DELIVER( _PDCLIB_Xdigits[ digit ] ); + PUT( _PDCLIB_Xdigits[ digit ] ); } } } @@ -192,7 +195,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status if ( *(++spec) == '%' ) { /* %% -> print single '%' */ - DELIVER( *spec ); + PUT( *spec ); return ++spec; } /* Initializing status structure */ @@ -288,7 +291,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status spec = endptr; } /* Having a precision cancels out any zero flag. */ - status->flags ^= E_zero; + status->flags &= ~E_zero; } /* Optional length modifier @@ -381,7 +384,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status break; case 'c': /* TODO: Flags, wide chars. */ - DELIVER( va_arg( status->arg, int ) ); + PUT( va_arg( status->arg, int ) ); return ++spec; case 's': /* TODO: Flags, wide chars. */ @@ -389,14 +392,14 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status char * s = va_arg( status->arg, char * ); while ( *s != '\0' ) { - DELIVER( *(s++) ); + PUT( *(s++) ); } return ++spec; } case 'p': /* TODO: E_long -> E_intptr */ status->base = 16; - status->flags |= ( E_lower | E_unsigned | E_alt | E_long ); + status->flags |= ( E_lower | E_unsigned | E_alt | E_pointer ); break; case 'n': { @@ -417,7 +420,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status if ( status->flags & E_unsigned ) { uintmax_t value; - switch ( status->flags & ( E_char | E_short | E_long | E_llong | E_size ) ) + switch ( status->flags & ( E_char | E_short | E_long | E_llong | E_size | E_pointer ) ) { case E_char: value = (uintmax_t)(unsigned char)va_arg( status->arg, int ); @@ -437,6 +440,12 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status case E_size: value = (uintmax_t)va_arg( status->arg, size_t ); break; + case E_pointer: + value = (uintmax_t)(uintptr_t)va_arg( status->arg, void * ); + break; + default: + puts( "UNSUPPORTED PRINTF FLAG COMBINATION" ); + return NULL; } ++(status->current); /* FIXME: The if clause means one-digit values do not get formatted */ @@ -456,11 +465,11 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status } if ( status->flags & E_lower ) { - DELIVER( _PDCLIB_digits[ digit ] ); + PUT( _PDCLIB_digits[ digit ] ); } else { - DELIVER( _PDCLIB_Xdigits[ digit ] ); + PUT( _PDCLIB_Xdigits[ digit ] ); } } else @@ -488,17 +497,20 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status case E_intmax: int2base( va_arg( status->arg, intmax_t ), status ); break; + default: + puts( "UNSUPPORTED PRINTF FLAG COMBINATION" ); + return NULL; } } if ( status->flags & E_minus ) { while ( status->current < status->width ) { - DELIVER( ' ' ); + PUT( ' ' ); ++(status->current); } } - if ( status->i >= status->n ) + if ( status->i >= status->n && status->n > 0 ) { status->s[status->n - 1] = '\0'; } @@ -506,19 +518,23 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status return ++spec; } +#endif + #ifdef TEST -#include <_PDCLIB_test.h> +#define _PDCLIB_FILEID "_PDCLIB/print.c" +#define _PDCLIB_STRINGIO + +#include "_PDCLIB_test.h" -#include -#include +#ifndef REGTEST -static int testprintf( char * buffer, size_t n, const char * format, ... ) +static int testprintf( char * buffer, const char * format, ... ) { /* 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.n = 100; status.i = 0; status.current = 0; status.s = buffer; @@ -536,256 +552,15 @@ static int testprintf( char * buffer, size_t n, const char * format, ... ) return status.i; } -#define TEST_CONVERSION_ONLY +#endif -#define TESTCASE_SPRINTF( x ) if ( strcmp( buffer, x ) == 0 ) {} \ - else { TEST_RESULTS += 1; printf( "FAILED: " __FILE__ ", line %d - \"%s\" != %s\n", __LINE__, buffer, #x ); } +#define TEST_CONVERSION_ONLY int main( void ) { - char buffer[100]; -#include "printf_testcases.incl" - -#if 0 - char buffer[100]; - TESTCASE( testprintf( buffer, 100, "%hhd", CHAR_MIN ) == 4 ); - TESTCASE( strcmp( buffer, "-128" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hhd", CHAR_MAX ) == 3 ); - TESTCASE( strcmp( buffer, "127" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hhd", 0 ) == 1 ); - TESTCASE( strcmp( buffer, "0" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hd", SHRT_MIN ) == 6 ); - TESTCASE( strcmp( buffer, "-32768" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hd", SHRT_MAX ) == 5 ); - TESTCASE( strcmp( buffer, "32767" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hd", 0 ) == 1 ); - TESTCASE( strcmp( buffer, "0" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%d", 0 ) == 1 ); - TESTCASE( strcmp( buffer, "0" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%ld", LONG_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%ld", LONG_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%ld", 0l ) == 1 ); - TESTCASE( strcmp( buffer, "0" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MIN ) == 20 ); - TESTCASE( strcmp( buffer, "-9223372036854775808" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MAX ) == 19 ); - TESTCASE( strcmp( buffer, "9223372036854775807" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%lld", 0ll ) ); - TESTCASE( strcmp( buffer, "0" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hhu", UCHAR_MAX ) == 3 ); - TESTCASE( strcmp( buffer, "255" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hhu", (unsigned char)-1 ) == 3 ); - TESTCASE( strcmp( buffer, "255" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hu", USHRT_MAX ) == 5 ); - TESTCASE( strcmp( buffer, "65535" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%hu", (unsigned short)-1 ) == 5 ); - TESTCASE( strcmp( buffer, "65535" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%u", UINT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "4294967295" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%u", -1u ) == 10 ); - TESTCASE( strcmp( buffer, "4294967295" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%lu", ULONG_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "4294967295" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%lu", -1ul ) == 10 ); - TESTCASE( strcmp( buffer, "4294967295" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%llu", ULLONG_MAX ) == 20 ); - TESTCASE( strcmp( buffer, "18446744073709551615" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%llu", -1ull ) == 20 ); - TESTCASE( strcmp( buffer, "18446744073709551615" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%X", UINT_MAX ) == 8 ); - TESTCASE( strcmp( buffer, "FFFFFFFF" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#X", -1u ) == 10 ); - TESTCASE( strcmp( buffer, "0XFFFFFFFF" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%x", UINT_MAX ) == 8 ); - TESTCASE( strcmp( buffer, "ffffffff" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#x", -1u ) == 10 ); - TESTCASE( strcmp( buffer, "0xffffffff" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%o", UINT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "37777777777" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#o", -1u ) == 12 ); - TESTCASE( strcmp( buffer, "037777777777" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%+d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%+d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "+2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%+d", 0 ) == 2 ); - TESTCASE( strcmp( buffer, "+0" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%+u", UINT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "4294967295" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%+u", -1u ) == 10 ); - TESTCASE( strcmp( buffer, "4294967295" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "% d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "% d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, " 2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "% d", 0 ) == 2 ); - TESTCASE( strcmp( buffer, " 0" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "% u", UINT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "4294967295" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "% u", -1u ) == 10 ); - TESTCASE( strcmp( buffer, "4294967295" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%9d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%9d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%10d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%10d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%11d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%11d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, " 2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%12d", INT_MIN ) == 12 ); - TESTCASE( strcmp( buffer, " -2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%12d", INT_MAX ) == 12 ); - TESTCASE( strcmp( buffer, " 2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-9d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-9d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-10d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-10d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-11d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-11d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "2147483647 " ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-12d", INT_MIN ) == 12 ); - TESTCASE( strcmp( buffer, "-2147483648 " ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-12d", INT_MAX ) == 12 ); - TESTCASE( strcmp( buffer, "2147483647 " ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%09d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%09d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%010d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%010d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%011d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%011d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "02147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%012d", INT_MIN ) == 12 ); - TESTCASE( strcmp( buffer, "-02147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%012d", INT_MAX ) == 12 ); - TESTCASE( strcmp( buffer, "002147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-09d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-09d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-010d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-010d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-011d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-011d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "2147483647 " ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-012d", INT_MIN ) == 12 ); - TESTCASE( strcmp( buffer, "-2147483648 " ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%-012d", INT_MAX ) == 12 ); - TESTCASE( strcmp( buffer, "2147483647 " ) == 0 ); - TESTCASE( testprintf( buffer, 8, "%9d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483" ) == 0 ); - TESTCASE( testprintf( buffer, 8, "%9d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-214748" ) == 0 ); - TESTCASE( testprintf( buffer, 9, "%9d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "21474836" ) == 0 ); - TESTCASE( testprintf( buffer, 9, "%9d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483" ) == 0 ); - TESTCASE( testprintf( buffer, 10, "%9d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "214748364" ) == 0 ); - TESTCASE( testprintf( buffer, 10, "%9d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-21474836" ) == 0 ); - TESTCASE( testprintf( buffer, 9, "%10d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "21474836" ) == 0 ); - TESTCASE( testprintf( buffer, 9, "%10d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483" ) == 0 ); - TESTCASE( testprintf( buffer, 10, "%10d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "214748364" ) == 0 ); - TESTCASE( testprintf( buffer, 10, "%10d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-21474836" ) == 0 ); - TESTCASE( testprintf( buffer, 11, "%10d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 11, "%10d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-214748364" ) == 0 ); - TESTCASE( testprintf( buffer, 10, "%11d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, " 21474836" ) == 0 ); - TESTCASE( testprintf( buffer, 10, "%11d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-21474836" ) == 0 ); - TESTCASE( testprintf( buffer, 11, "%11d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, " 214748364" ) == 0 ); - TESTCASE( testprintf( buffer, 11, "%11d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-214748364" ) == 0 ); - TESTCASE( testprintf( buffer, 12, "%11d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, " 2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 12, "%11d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 11, "%12d", INT_MAX ) == 12 ); - TESTCASE( strcmp( buffer, " 21474836" ) == 0 ); - TESTCASE( testprintf( buffer, 11, "%12d", INT_MIN ) == 12 ); - TESTCASE( strcmp( buffer, " -21474836" ) == 0 ); - TESTCASE( testprintf( buffer, 12, "%12d", INT_MAX ) == 12 ); - TESTCASE( strcmp( buffer, " 214748364" ) == 0 ); - TESTCASE( testprintf( buffer, 12, "%12d", INT_MIN ) == 12 ); - TESTCASE( strcmp( buffer, " -214748364" ) == 0 ); - TESTCASE( testprintf( buffer, 13, "%12d", INT_MAX ) == 12 ); - TESTCASE( strcmp( buffer, " 2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 13, "%12d", INT_MIN ) == 12 ); - TESTCASE( strcmp( buffer, " -2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%030.20d", INT_MAX ) == 30 ); - TESTCASE( strcmp( buffer, " 00000000002147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%.6x", UINT_MAX ) == 8 ); - TESTCASE( strcmp( buffer, "ffffffff" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#6.3x", UINT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "0xffffffff" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#3.6x", UINT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "0xffffffff" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%.6d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%6.3d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%3.6d", INT_MIN ) == 11 ); - TESTCASE( strcmp( buffer, "-2147483648" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#0.6x", UINT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "0xffffffff" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#06.3x", UINT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "0xffffffff" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#03.6x", UINT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "0xffffffff" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#0.6d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#06.3d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#03.6d", INT_MAX ) == 10 ); - TESTCASE( strcmp( buffer, "2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#+.6d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "+2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#+6.3d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "+2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%#+3.6d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "+2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%+0.6d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "+2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%+06.3d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "+2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%+03.6d", INT_MAX ) == 11 ); - TESTCASE( strcmp( buffer, "+2147483647" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%c", 'x' ) == 1 ); - TESTCASE( strcmp( buffer, "x" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%s", "abcdef" ) == 6 ); - TESTCASE( strcmp( buffer, "abcdef" ) == 0 ); - TESTCASE( testprintf( buffer, 100, "%p", (void *)0xdeadbeef ) == 10 ); - TESTCASE( strcmp( buffer, "0xdeadbeef" ) == 0 ); +#ifndef REGTEST + char target[100]; +#include "printf_testcases.h" #endif return TEST_RESULTS; }