improve GFX2_LogHexDump() : dont print consecutive 00's lines
This commit is contained in:
parent
fea7ac6a3c
commit
06d69ac90a
@ -87,36 +87,62 @@ extern void GFX2_LogHexDump(GFX2_Log_priority_T priority, const char * header, c
|
|||||||
{
|
{
|
||||||
char line[128];
|
char line[128];
|
||||||
long i;
|
long i;
|
||||||
|
int previous_allzero_count = 0;
|
||||||
while (count > 0)
|
while (count > 0)
|
||||||
{
|
{
|
||||||
int p = 0, r;
|
int p = 0, r;
|
||||||
r = snprintf(line + p, sizeof(line) - p, "%s%06lX:", header, offset);
|
int allzero = 1;
|
||||||
if (r < 0)
|
|
||||||
return;
|
|
||||||
p += r;
|
|
||||||
for (i = 0; i < count && i < 16; i++)
|
for (i = 0; i < count && i < 16; i++)
|
||||||
{
|
{
|
||||||
r = snprintf(line + p, sizeof(line) - p, " %02x", data[offset+i]);
|
if (data[offset+i] != 0)
|
||||||
|
{
|
||||||
|
allzero = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (previous_allzero_count && allzero)
|
||||||
|
{
|
||||||
|
// prints a single "*" for multiple line of 00's
|
||||||
|
if (previous_allzero_count == 1)
|
||||||
|
GFX2_Log(priority, "*\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
r = snprintf(line + p, sizeof(line) - p, "%s%06lX:", header, offset);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return;
|
return;
|
||||||
p += r;
|
p += r;
|
||||||
if (i == 7)
|
for (i = 0; i < count && i < 16; i++)
|
||||||
line[p++] = ' ';
|
{
|
||||||
|
r = snprintf(line + p, sizeof(line) - p, " %02x", data[offset+i]);
|
||||||
|
if (r < 0)
|
||||||
|
return;
|
||||||
|
p += r;
|
||||||
|
if (i == 7)
|
||||||
|
line[p++] = ' ';
|
||||||
|
}
|
||||||
|
if (i < 16)
|
||||||
|
{
|
||||||
|
if (i < 7)
|
||||||
|
line[p++] = ' ';
|
||||||
|
memset(line + p, ' ', 3 * (16 - i));
|
||||||
|
p += 3 * (16 - i);
|
||||||
|
}
|
||||||
|
line[p++] = ' ';
|
||||||
|
line[p++] = '|';
|
||||||
|
for (i = 0; i < count && i < 16; i++)
|
||||||
|
line[p++] = data[offset+i]>=32 && data[offset+i]<127 ? data[offset+i] : '.';
|
||||||
|
line[p++] = '\0';
|
||||||
|
GFX2_Log(priority, "%s\n", line);
|
||||||
}
|
}
|
||||||
if (i < 16)
|
if (allzero)
|
||||||
{
|
previous_allzero_count++;
|
||||||
if (i < 7)
|
else
|
||||||
line[p++] = ' ';
|
previous_allzero_count = 0;
|
||||||
memset(line + p, ' ', 3 * (16 - i));
|
|
||||||
p += 3 * (16 - i);
|
|
||||||
}
|
|
||||||
line[p++] = ' ';
|
|
||||||
line[p++] = '|';
|
|
||||||
for (i = 0; i < count && i < 16; i++)
|
|
||||||
line[p++] = data[offset+i]>=32 && data[offset+i]<127 ? data[offset+i] : '.';
|
|
||||||
line[p++] = '\0';
|
|
||||||
GFX2_Log(priority, "%s\n", line);
|
|
||||||
count -= i;
|
count -= i;
|
||||||
offset += i;
|
offset += i;
|
||||||
}
|
}
|
||||||
|
// print the ending offset if there was "*"
|
||||||
|
if (previous_allzero_count > 1)
|
||||||
|
GFX2_Log(priority, "%s%06lX\n", header, offset);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user