Compiling KMess for Windows: kmess-windows-debug-hack.patch
| File kmess-windows-debug-hack.patch, 3.6 kB (added by diederik, 3 months ago) |
|---|
-
src/kmessdebug.cpp
22 22 #include <unistd.h> 23 23 24 24 #include <QTime> 25 #include <QtCore> 25 26 27 #ifdef Q_OS_WIN 28 #include <QFile> 29 #define EOL "\r\n" 30 #else 31 #define EOL "\n" 32 #endif 26 33 34 27 35 // kmessdebug.h adds a KMESS_NULL macro to detect 28 36 // and display null pointer warnings. This is used 29 37 // in a " if(KMESS_NULL(var)) return; " statement … … 167 175 bool isAssert = ( strncmp( message, "ASSERT", 7 ) == 0 ); // 'ASSERT failure' or 'ASSERT: ' 168 176 static QTime timer; 169 177 if( ! timer.isValid() ) 178 { 170 179 timer.start(); 180 } 181 171 182 float elapsed = (float)timer.elapsed() / (float)1000; 172 183 184 185 // Quick hack to get debug output on Windows. 186 #ifdef Q_OS_WIN 187 static QFile debugFile; 188 QString debugLine; 189 190 if( ! debugFile.isOpen() ) 191 { 192 debugFile.setFileName("C:\\kmessdebug.log"); 193 if( ! debugFile.open( QFile::WriteOnly ) ) 194 { 195 fprintf( stderr, "%.3f> WARNING: %s" EOL, elapsed, "unable to open debug file: C:\\kmessdebug.log" ); 196 abort(); 197 } 198 } 199 200 if( ! debugFile.isOpen() ) 201 { 202 return; 203 } 204 173 205 if( isAssert ) 174 206 { 207 debugLine.sprintf( "%.3f> kmess(%d) %s" EOL, elapsed, getpid(), message ); 208 debugFile.write( debugLine.toUtf8() ); 209 debugFile.flush(); 210 211 #ifdef KMESSTEST 212 if( type == QtFatalMsg ) 213 { 214 abort(); 215 } 216 #endif 217 218 } 219 else 220 { 221 switch( type ) 222 { 223 case QtDebugMsg: 224 debugLine.sprintf( "%.3f> %s" EOL, elapsed, message ); 225 break; 226 227 case QtWarningMsg: 228 debugLine.sprintf( "%.3f> WARNING: %s" EOL, elapsed, message ); 229 break; 230 231 case QtCriticalMsg: 232 debugLine.sprintf( "%.3f> CRITICAL: %s" EOL, elapsed, message ); 233 break; 234 235 case QtFatalMsg: 236 debugLine.sprintf( "%.3f> FATAL: %s" EOL, elapsed, message ); 237 } 238 239 debugFile.write( debugLine.toUtf8() ); 240 debugFile.flush(); 241 } 242 #endif 243 244 245 if( isAssert ) 246 { 175 247 // can be qWarning() by us or qFatal() from Qt. 176 fprintf( stderr, "%.3f> kmess(%d) %s \n", elapsed, getpid(), message );248 fprintf( stderr, "%.3f> kmess(%d) %s" EOL, elapsed, getpid(), message ); 177 249 178 250 #ifdef KMESSTEST 179 251 // Crash on qFatal() from Qt, called from Q_ASSERT() … … 189 261 switch( type ) 190 262 { 191 263 case QtDebugMsg: 192 fprintf( stderr, "%.3f> %s \n", elapsed, message );264 fprintf( stderr, "%.3f> %s" EOL, elapsed, message ); 193 265 break; 194 266 195 267 case QtWarningMsg: 196 fprintf( stderr, "%.3f> WARNING: %s \n", elapsed, message );268 fprintf( stderr, "%.3f> WARNING: %s" EOL, elapsed, message ); 197 269 break; 198 270 199 271 case QtCriticalMsg: 200 fprintf( stderr, "%.3f> CRITICAL: %s \n", elapsed, message );272 fprintf( stderr, "%.3f> CRITICAL: %s" EOL, elapsed, message ); 201 273 break; 202 274 203 275 case QtFatalMsg: 204 fprintf( stderr, "%.3f> FATAL: %s \n", elapsed, message );276 fprintf( stderr, "%.3f> FATAL: %s" EOL, elapsed, message ); 205 277 206 278 #ifdef KMESSTEST 207 279 abort(); -
src/kmessdebug.h
24 24 // reason to include this file by default so no one else has to. 25 25 #include <KDebug> 26 26 27 #ifdef Q_OS_WIN 28 #include <QDebug> 27 29 30 #undef kDebug 31 #undef kWarning 32 #define kDebug ( QDebug(QtDebugMsg) << Q_FUNC_INFO ).space 33 #define kWarning ( QDebug(QtWarningMsg) << Q_FUNC_INFO ).space 34 #endif 35 28 36 #if ( KMESS_DEBUG == 1) 29 37 #define KMESSTEST 30 38 #define KMESS_NETWORK_WINDOW
