nkeynes@185: #include "lib.h" nkeynes@185: nkeynes@185: void fwrite_dump( FILE *f, char *buf, int length) nkeynes@185: { nkeynes@185: int i,j; nkeynes@185: for( i=0; i>8)&0xFF, (val>>16)&0xFF, (val>>24)&0xFF ); nkeynes@185: } nkeynes@185: for( ;j<16; j+= 4 ) { nkeynes@185: fprintf( f, " " ); nkeynes@185: } nkeynes@185: for( j=0; j<16 && i+j < length; j++ ) { nkeynes@185: fprintf( f, "%c", isprint(buf[i+j]) ? buf[i+j] : '.' ); nkeynes@185: } nkeynes@185: fprintf( f, "\n"); nkeynes@185: } nkeynes@185: } nkeynes@190: nkeynes@190: void fwrite_diff( FILE *f, char *a, int a_length, char *b, int b_length ) nkeynes@190: { nkeynes@190: int i; nkeynes@190: fprintf( f, "Expected %d bytes:\n", a_length ); nkeynes@190: fwrite_dump( f, a, a_length ); nkeynes@190: fprintf( f, "but was %d bytes =>\n", b_length ); nkeynes@190: fwrite_dump( f, b, b_length ); nkeynes@190: } nkeynes@190: nkeynes@190: void fwrite_diff32( FILE *f, char *a, int a_length, char *b, int b_length ) nkeynes@190: { nkeynes@190: int i,j, k; nkeynes@190: int length = a_length > b_length ? a_length : b_length; nkeynes@190: fprintf( f, "Expected %d bytes, was %d bytes =>\n", a_length, b_length ); nkeynes@190: nkeynes@190: for( i=0; i= a_length || i+k >= b_length || nkeynes@190: *((volatile unsigned int *)(a+i+k)) != *((volatile unsigned int *)(b+i+k)) ) { nkeynes@190: break; nkeynes@190: } nkeynes@190: } nkeynes@190: if( k != 32 && i+k != length ) { nkeynes@190: fprintf( f, "%08X: ", i ); nkeynes@190: for( j=0; j<16 && i+j < a_length; j+=4 ) { nkeynes@190: fprintf( f, "%08X ", *((volatile unsigned int *)(a+i+j)) ); nkeynes@190: } nkeynes@190: nkeynes@190: for(; j<16; j+=4 ) { nkeynes@190: fprintf( f, " " ); nkeynes@190: } nkeynes@190: nkeynes@190: fprintf( f, "| " ); nkeynes@190: for( j=0; j<16 && i+j < b_length; j+=4 ) { nkeynes@190: fprintf( f, "%08X ", *((volatile unsigned int *)(b+i+j)) ); nkeynes@190: } nkeynes@190: nkeynes@190: fprintf( f, "\n"); nkeynes@190: } nkeynes@190: } nkeynes@190: }