diff --git a/servlog.c b/servlog.c index 091d782d..db23f53b 100644 --- a/servlog.c +++ b/servlog.c @@ -400,3 +400,44 @@ snprintf(fPath, 1023, "%s/", "../log"); void SICSLogWrite(char *pText, OutCode eOut) { SICSLogWriteTime(pText, eOut, NULL); } + + void SICSLogWriteHexTime(const char* text, int count, OutCode eOut, struct timeval *tp) { + char hex[] = "0123456789ABCDEF"; + char addr[20], left[80], right[80]; + char *lp = left; + char *rp = right; + int i; + for (i = 0; i < count; ++i) { + if ((i & 0xF) == 0) { + if (i > 0) { + char line[132]; + snprintf(line, sizeof(line)-1, "%-6s: %-49s | %-17s |", addr, left, right); + SICSLogWriteTime(line, eOut, tp); + } + snprintf(addr, sizeof(addr)-1, "%06x", i); + lp = left; + rp = right; + } + *lp++ = hex[(text[i] >> 4) & 0xF]; + *lp++ = hex[(text[i]) & 0xF]; + *lp++ = ' '; + if (text[i]>= ' ' && text[i] <= '~') + *rp++ = text[i]; + else + *rp++ = '.'; + if ((i & 0xF) == 8) { + *lp++ = ' '; + *rp++ = ' '; + } + *lp = *rp = '\0'; + } + if (i > 0) { + char line[132]; + snprintf(line, sizeof(line)-1, "%-6s: %-49s | %-17s |", addr, left, right); + SICSLogWriteTime(line, eOut, tp); + } + } + + void SICSLogWriteHex(const char* text, int count, OutCode eOut) { + SICSLogWriteHexTime(text, count, eOut, NULL); + } diff --git a/servlog.h b/servlog.h index bea78378..b107d256 100644 --- a/servlog.h +++ b/servlog.h @@ -17,6 +17,8 @@ #include "Scommon.h" void SICSLogWrite(char *ptext, OutCode eOut ); void SICSLogWriteTime(char *ptext, OutCode eOut, struct timeval *tp ); + void SICSLogWriteHex(const char* text, int count, OutCode eOut); + void SICSLogWriteHexTime(const char* text, int count, OutCode eOut, struct timeval *tp); void SICSLogEnable(int flag); int KillCapture(SConnection *pCon);