Ticket #1328: main_mdump.c.diff
File main_mdump.c.diff, 1.3 KB (added by Gene Smith, on 09/30/08 at 22:10:16) |
---|
-
.c
old new 34 34 char *argv[] 35 35 ) 36 36 { 37 unsigned char n, m, max=20; 37 unsigned char n, m; 38 int max; 39 int res; 38 40 uintptr_t addr = 0; 39 41 unsigned char *pb; 40 42 … … 43 45 44 46 if (argc>2) { 45 47 max = rtems_shell_str2int(argv[2]); 46 max /= 16; 48 if (max <= 0) { 49 max = 1; /* print 1 item if 0 or neg. */ 50 res = 0; 51 } 52 else { 53 max--; 54 res = max & 0xf;/* num bytes in last row */ 55 max >>= 4; /* div by 16 */ 56 max++; /* num of rows to print */ 57 if (max > 20) { /* limit to 20 */ 58 max = 20; 59 res = 0xf; /* 16 bytes print in last row */ 60 } 61 } 62 } 63 else { 64 max = 20; 65 res = 0xf; 47 66 } 48 49 50 if (!max)51 max = 1;52 67 53 68 for (m=0; m<max; m++) { 54 69 printf("0x%08" PRIXPTR " ", addr); 55 70 pb = (unsigned char*) addr; 56 for (n=0;n<16;n++) 57 printf("%02X%c", pb[n], (n == 7) ? '-' : ' '); 58 for (n=0;n<16;n++) { 71 for (n=0;n<=(m==(max-1)?res:0xf);n++) 72 printf("%02X%c",pb[n],n==7?'-':' '); 73 for (;n<=0xf;n++) 74 printf(" %c",n==7?'-':' '); 75 for (n=0;n<=(m==(max-1)?res:0xf);n++) { 59 76 printf("%c", isprint(pb[n]) ? pb[n] : '.'); 60 77 } 61 78 printf("\n");