Now, Dump() output hex and ascii side by side.
Renamed g_IsEnabled global into a more meaningfull name. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8554 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -36,10 +36,11 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <NetDebug.h>
|
||||
#include <SupportDefs.h>
|
||||
|
||||
|
||||
// Off by default cuz the BeBook sez so.
|
||||
static bool g_IsEnabled = false;
|
||||
static bool g_NetDebugEnabled = false;
|
||||
|
||||
|
||||
/* Enable
|
||||
@@ -58,7 +59,7 @@ static bool g_IsEnabled = false;
|
||||
*/
|
||||
void BNetDebug::Enable( bool Enable )
|
||||
{
|
||||
g_IsEnabled = Enable;
|
||||
g_NetDebugEnabled = Enable;
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +73,7 @@ void BNetDebug::Enable( bool Enable )
|
||||
*/
|
||||
bool BNetDebug::IsEnabled( void )
|
||||
{
|
||||
return g_IsEnabled;
|
||||
return g_NetDebugEnabled;
|
||||
}
|
||||
|
||||
|
||||
@@ -94,15 +95,13 @@ bool BNetDebug::IsEnabled( void )
|
||||
*/
|
||||
void BNetDebug::Print( const char* msg )
|
||||
{
|
||||
if ( g_IsEnabled )
|
||||
{
|
||||
if ( msg == NULL )
|
||||
{
|
||||
msg = "";
|
||||
}
|
||||
if ( !g_NetDebugEnabled )
|
||||
return;
|
||||
|
||||
fprintf( stderr, "debug: %s\n", msg );
|
||||
}
|
||||
if (msg == NULL)
|
||||
msg = "(null)";
|
||||
|
||||
fprintf( stderr, "debug: %s\n", msg );
|
||||
}
|
||||
|
||||
|
||||
@@ -138,47 +137,51 @@ void BNetDebug::Print( const char* msg )
|
||||
* reasonably cohesive in appearance. This might be an expensive
|
||||
* operation so use judiciously.
|
||||
*/
|
||||
void BNetDebug::Dump( const char* data, size_t size, const char* title )
|
||||
void BNetDebug::Dump(const char* data, size_t size, const char* title)
|
||||
{
|
||||
int i;
|
||||
char line[17];
|
||||
|
||||
if ( g_IsEnabled == false )
|
||||
{
|
||||
if ( ! g_NetDebugEnabled)
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf( stderr, "----------\n%s\n(dumping %ld bytes)\n",
|
||||
title ? title : "(untitled)", size );
|
||||
|
||||
if (! data)
|
||||
fprintf(stderr, "NULL data!\n");
|
||||
else {
|
||||
uint32 i,j;
|
||||
char text[96]; // only 3*16 + 3 + 16 max by line needed
|
||||
uint8 *byte = (uint8 *) data;
|
||||
char *ptr;
|
||||
|
||||
fprintf( stderr, "----------\n%s\n(dumping %d bytes)\n", title, size );
|
||||
for ( i = 0; i < size; i += 16 ) {
|
||||
ptr = text;
|
||||
|
||||
memset( line, 0, sizeof( line ) );
|
||||
for ( j = i; j < i+16 ; j++ ) {
|
||||
if ( j < size )
|
||||
sprintf(ptr, "%02x ", byte[j]);
|
||||
else
|
||||
sprintf(ptr, " ");
|
||||
ptr += 3;
|
||||
};
|
||||
|
||||
strcat(ptr, "| ");
|
||||
ptr += 2;
|
||||
|
||||
for (j = i; j < size && j < i+16;j++) {
|
||||
if ( byte[j] >= 0x20 && byte[j] < 0x7e )
|
||||
*ptr = byte[j];
|
||||
else
|
||||
*ptr = '.';
|
||||
ptr++;
|
||||
};
|
||||
|
||||
while ( i < size )
|
||||
{
|
||||
fprintf( stderr, "%02x ", ( unsigned char )data[i] );
|
||||
|
||||
line[i % 16] = ( isprint( data[i] ) ) ? data[i] : '.';
|
||||
|
||||
if ( ( i + 1 ) % 16 == 0 )
|
||||
{
|
||||
fprintf( stderr, " | %s\n", line );
|
||||
memset( line, 0, sizeof( line ) );
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if ( ( i + 1 ) % 16 != 0 )
|
||||
{
|
||||
while ( i % 16 != 0 )
|
||||
{
|
||||
printf( " " );
|
||||
i++;
|
||||
}
|
||||
|
||||
fprintf( stderr, " | %s", line );
|
||||
}
|
||||
|
||||
fprintf( stderr, "\n----------\n" );
|
||||
ptr[0] = '\n';
|
||||
ptr[1] = '\0';
|
||||
fprintf(stderr, text);
|
||||
};
|
||||
};
|
||||
fprintf( stderr, "----------\n" );
|
||||
fflush( stderr );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user