* 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 ;
 }

[ 編集 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]