--- a/test/lib.c Tue Jul 11 01:35:27 2006 +0000 +++ b/test/lib.c Wed Aug 02 04:13:15 2006 +0000 @@ -18,3 +18,45 @@ fprintf( f, "\n"); } } + +void fwrite_diff( FILE *f, char *a, int a_length, char *b, int b_length ) +{ + int i; + fprintf( f, "Expected %d bytes:\n", a_length ); + fwrite_dump( f, a, a_length ); + fprintf( f, "but was %d bytes =>\n", b_length ); + fwrite_dump( f, b, b_length ); +} + +void fwrite_diff32( FILE *f, char *a, int a_length, char *b, int b_length ) +{ + int i,j, k; + int length = a_length > b_length ? a_length : b_length; + fprintf( f, "Expected %d bytes, was %d bytes =>\n", a_length, b_length ); + + for( i=0; i= a_length || i+k >= b_length || + *((volatile unsigned int *)(a+i+k)) != *((volatile unsigned int *)(b+i+k)) ) { + break; + } + } + if( k != 32 && i+k != length ) { + fprintf( f, "%08X: ", i ); + for( j=0; j<16 && i+j < a_length; j+=4 ) { + fprintf( f, "%08X ", *((volatile unsigned int *)(a+i+j)) ); + } + + for(; j<16; j+=4 ) { + fprintf( f, " " ); + } + + fprintf( f, "| " ); + for( j=0; j<16 && i+j < b_length; j+=4 ) { + fprintf( f, "%08X ", *((volatile unsigned int *)(b+i+j)) ); + } + + fprintf( f, "\n"); + } + } +}