summaryrefslogtreecommitdiff
path: root/libopie2
Side-by-side diff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/odebug.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/libopie2/opiecore/odebug.cpp b/libopie2/opiecore/odebug.cpp
index b4eaf2d..b2a37bc 100644
--- a/libopie2/opiecore/odebug.cpp
+++ b/libopie2/opiecore/odebug.cpp
@@ -63,129 +63,133 @@
#include <qstringlist.h>
#include <qtextstream.h>
/* UNIX */
#include <stdlib.h> // abort
#include <unistd.h> // getpid
#include <stdarg.h> // vararg stuff
#include <ctype.h> // isprint
#include <syslog.h>
#include <errno.h>
#include <string.h>
#ifndef OPIE_NO_BACKTRACE
#include <execinfo.h>
#endif
/*======================================================================================
* debug levels
*======================================================================================*/
enum DebugLevels {
ODEBUG_INFO = 0,
ODEBUG_WARN = 1,
ODEBUG_ERROR = 2,
ODEBUG_FATAL = 3
};
/*======================================================================================
* oDebug private data
*======================================================================================*/
/*======================================================================================
* the main debug function
*======================================================================================*/
static void oDebugBackend( unsigned short level, unsigned int area, const char *data)
{
//qDebug( "oDebugBackend: Level=%d, Area=%d, Data=%s", level, area, data );
// ML: OPIE doesn't use areacodes at the moment. See the KDE debug classes for an
// ML: example use. I think it's not necessary to implement such a strategy here.
// ML: Comments?
int priority = 0;
QString caption;
QString lev;
switch( level )
{
case ODEBUG_INFO: lev = "(Info)"; caption = "Info"; priority = LOG_INFO; break;
case ODEBUG_WARN: lev = "(Warn)"; caption = "Warning"; priority = LOG_WARNING; break;
case ODEBUG_FATAL: lev = "(Fatal)"; caption = "Fatal Error"; priority = LOG_CRIT; break;
default: qDebug( "oDebugBackend: Warning: Unknown debug level! - defaulting to ODEBUG_ERROR." );
case ODEBUG_ERROR: lev = "(Error)"; caption = "Error"; priority = LOG_ERR; break;
}
short output = OGlobalSettings::debugMode();
if (!oApp && (output == 1))
{
qDebug( "oDebugBackend: Warning: no oapplication object - can't use MsgBox" );
output = 2; // need an application object to use MsgBox
}
- QString areaName = (oApp) ? oApp->appName() : "<unknown>";
+ // gcc 2.9x is dumb and sucks... can you hear it?
+ //QString areaName = (oApp) ? oApp->appName() : "<unknown>";
+ QString areaName;
+ if ( oApp ) areaName = oApp->appName();
+ else areaName = "<unknown>";
// Output
switch( output )
{
case -1: // ignore
{
return;
}
case 0: // File
{
QString outputFilename = OGlobalSettings::debugOutput();
const int BUFSIZE = 4096;
char buf[BUFSIZE] = "";
buf[BUFSIZE-1] = '\0';
int nSize;
nSize = snprintf( buf, BUFSIZE-1, "%s: %s", (const char*) areaName, data);
QFile outputFile( outputFilename );
if ( outputFile.open( IO_WriteOnly | IO_Append ) )
{
if ( ( nSize == -1 ) || ( nSize >= BUFSIZE ) )
{
outputFile.writeBlock( buf, BUFSIZE-1 );
}
else
{
outputFile.writeBlock( buf, nSize );
}
}
else
{
qDebug( "ODebug: can't write to file '%s' (%s)", (const char*) outputFilename, strerror(errno) );
}
break;
} // automatic close of file here
case 1: // Message Box
{
// Since we are in opiecore here, we cannot use OMsgBox and use
// QMessageBox instead
caption += QString("(") + areaName + ")";
QMessageBox::warning( 0L, caption, data, ("&OK") ); // tr?
break;
}
case 2: // Shell
{
FILE *output = stderr;
fprintf( output, "%s: ", (const char*) areaName );
fputs( data, output);
break;
}
case 3: // syslog
{
syslog( priority, "%s", data);
break;
}
case 4: // socket
{