* dump.h [#e3ee0b70]
#ifndef _DUMP_H_
#define _DUMP_H_
void dumpf( void*, size_t, FILE* ) ;
#define dump( _pt, _sz ) dumpf( _pt, _sz, stdout )
#endif /* _DUMP_H_ */
* dump.c [#h0da7bb5]
#include <sys/types.h>
#include <stdio.h>
#include "dump.h"
/*========================================*
* dumpf
* P1: dump start pointer
* P2: dump size
* P3: printing file pointer
* Re: (void)
*========================================*/
void
dumpf( void * pt, size_t size, FILE *fp )
{
int i, j=1 ;
char buf[16] ;
memset(buf, 0, sizeof(buf)) ;
for( i=0; i<size; i++ ){
switch(i%16){
case 0 :
if(j == 1){
fprintf(fp, " %.08x:", ((u_int)pt+i)) ;
memset(buf, 0, sizeof(buf)) ;
j = 0 ;
}else{
fprintf(fp, " %.16s\n %.08x:", buf, ((u_int)pt+i)) ;
memset(buf, 0, sizeof(buf)) ;
}
case 4 :
case 8 :
case 12 :
fprintf(fp, " ") ;
default :
fprintf(fp, "%.02x", *(u_char*)((u_int)pt+i)) ;
buf[i%16] = ((*(u_char*)((u_int)pt+i) == 0x20)
|| (*(u_char*)((u_int)pt+i) >= 0x20 && *(u_char*)((u_int)pt+i) <= 0x7e))
? *(u_char*)((u_int)pt+i) : 0x2e ;
}
}
i = (size%16 == 0) ? 16 : size%16 ;
fprintf(fp, "%*s%.*s\n", ((i%4 == 0) ? 40 : 39)-(i*2)-(i/4), "", i, buf) ;
return ;
}