diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2007-07-09 19:25:42 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2007-07-09 19:25:42 +0000 |
| commit | b4da565534b3826037576a6c44e40716b024f89a (patch) | |
| tree | d04b7d3a6240dea2471f1d08fbdaf91dad651f58 /src/logger.cpp | |
| parent | 62a1a445ab61fe31367054c094b7e0bb0495833d (diff) | |
| download | libbu++-b4da565534b3826037576a6c44e40716b024f89a.tar.gz libbu++-b4da565534b3826037576a6c44e40716b024f89a.tar.bz2 libbu++-b4da565534b3826037576a6c44e40716b024f89a.tar.xz libbu++-b4da565534b3826037576a6c44e40716b024f89a.zip | |
The new logHexDump function seems to work just fine.
Diffstat (limited to '')
| -rw-r--r-- | src/logger.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/logger.cpp b/src/logger.cpp index 34b5d78..1e0313b 100644 --- a/src/logger.cpp +++ b/src/logger.cpp | |||
| @@ -129,3 +129,47 @@ void Bu::Logger::setLevel( int n ) | |||
| 129 | } | 129 | } |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | void Bu::Logger::hexDump( int nLevel, const char *sFile, const char *sFunction, | ||
| 133 | int nLine, const void *pDataV, long nDataLen, | ||
| 134 | const char *lpName ) | ||
| 135 | { | ||
| 136 | log( nLevel, sFile, sFunction, nLine, "Displaying %ld bytes of %s.\n", nDataLen, lpName ); | ||
| 137 | const unsigned char *pData = (const unsigned char *)pDataV; | ||
| 138 | int j = 0; | ||
| 139 | Bu::FString sBorder; | ||
| 140 | for( int l = 0; l < 8*3+2*8+2; l++ ) sBorder += ((l!=8*3)?("-"):("+")); | ||
| 141 | sBorder += '\n'; | ||
| 142 | log( nLevel, sFile, sFunction, nLine, sBorder.getStr() ); | ||
| 143 | Bu::FString sLine; | ||
| 144 | for(;;) | ||
| 145 | { | ||
| 146 | int kmax = 8; | ||
| 147 | if( nDataLen-j < 8 ) kmax = nDataLen-j; | ||
| 148 | for(int k = 0; k < 8; k++ ) | ||
| 149 | { | ||
| 150 | if( k < kmax ) | ||
| 151 | { | ||
| 152 | char buf[4]; | ||
| 153 | sprintf( buf, "%02X ", (int)((unsigned char)pData[j+k]) ); | ||
| 154 | sLine += buf; | ||
| 155 | } | ||
| 156 | else | ||
| 157 | { | ||
| 158 | sLine += "-- "; | ||
| 159 | } | ||
| 160 | } | ||
| 161 | sLine += "| "; | ||
| 162 | for(int k = 0; k < kmax; k++ ) | ||
| 163 | { | ||
| 164 | char buf[3]; | ||
| 165 | sprintf( buf, "%c ", (pData[j+k]>32 && pData[j+k]<=128)?(pData[j+k]):('.') ); | ||
| 166 | sLine += buf; | ||
| 167 | } | ||
| 168 | sLine += '\n'; | ||
| 169 | log( nLevel, sFile, sFunction, nLine, sLine.getStr() ); | ||
| 170 | sLine = ""; | ||
| 171 | j += kmax; | ||
| 172 | if( j >= nDataLen ) break; | ||
| 173 | } | ||
| 174 | log( nLevel, sFile, sFunction, nLine, sBorder.getStr() ); | ||
| 175 | } | ||
