From 62cc2ba2c33dccaa12bf6a43a9894d92297588d4 Mon Sep 17 00:00:00 2001
From: Alexander Golubev <fatzer2@gmail.com>
Date: Mon, 26 Aug 2013 21:45:42 +0400
Subject: [PATCH] kdebug: add default message printing destinations

---
 tdecore/kdebug.cpp |  43 +++++++++++++------
 tdecore/kdebugrc   | 121 ++++++-----------------------------------------------
 2 files changed, 42 insertions(+), 122 deletions(-)

diff --git a/tdecore/kdebug.cpp b/tdecore/kdebug.cpp
index 5df09fb..dbff403 100644
--- a/tdecore/kdebug.cpp
+++ b/tdecore/kdebug.cpp
@@ -222,14 +222,16 @@ static void kDebugBackend( unsigned short nLevel, unsigned int nArea, const char
         kDebug_data->aAreaName = TDEGlobal::instance()->instanceName();
   }
 
-  if (kDebug_data->config && kDebug_data->oldarea != nArea) {
-    kDebug_data->config->setGroup( TQString::number(static_cast<int>(nArea)) );
+  if ( kDebug_data->oldarea != nArea ) {
     kDebug_data->oldarea = nArea;
-    if ( nArea > 0 && TDEGlobal::_instance )
-      kDebug_data->aAreaName = getDescrFromNum(nArea);
-    if ((nArea == 0) || kDebug_data->aAreaName.isEmpty())
-      if ( TDEGlobal::_instance )
+    if( TDEGlobal::_instance ) {
+      if ( nArea > 0 ) {
+        kDebug_data->aAreaName = getDescrFromNum(nArea);
+      }
+      if ( nArea == 0 || kDebug_data->aAreaName.isEmpty() ) {
         kDebug_data->aAreaName = TDEGlobal::instance()->instanceName();
+      }
+    }
   }
 
   int nPriority = 0;
@@ -249,7 +251,7 @@ static void kDebugBackend( unsigned short nLevel, unsigned int nArea, const char
       key = "WarnOutput";
       aCaption = "Warning";
       nPriority = LOG_WARNING;
-	break;
+    break;
   case KDEBUG_FATAL:
       key = "FatalOutput";
       aCaption = "Fatal Error";
@@ -263,16 +265,31 @@ static void kDebugBackend( unsigned short nLevel, unsigned int nArea, const char
       nPriority = LOG_ERR;
       break;
   }
-
-  // if no output mode is specified default to no debug output
-  short nOutput = kDebug_data->config ? kDebug_data->config->readNumEntry(key, 4) : 4;
+  
+  short nOutput = -1;
+  if ( kDebug_data->config ) {
+    kDebug_data->config->setGroup( TQString::number(static_cast<int>(nArea)) );
+    nOutput = kDebug_data->config->readNumEntry(key, -1);
+    if( nOutput == -1 ) {
+      kDebug_data->config->setGroup( TQString::fromAscii("Default") );
+      nOutput = kDebug_data->config->readNumEntry(key, -1);
+    }
+  }
+  // if no output mode is specified default to no stderr output
+  // NOTE: don't set this to 4 (no output) because in that case you won't be 
+  //       able to get any output from applications which don't create 
+  //       TDEApplication objects.
+  if ( nOutput == -1 ) {
+    nOutput = 2;
+  }
 
   // If the application doesn't have a TQApplication object it can't use
-  // a messagebox.
-  if (!kapp && (nOutput == 1))
+  // a messagebox, as well as in case of GUI is disabled.
+  if ( nOutput == 1 && ( !kapp || !kapp->guiEnabled()) ) {
     nOutput = 2;
-  else if ( nOutput == 4 && nLevel != KDEBUG_FATAL )
+  } else if ( nOutput == 4 && nLevel != KDEBUG_FATAL ) {
       return;
+  }
 
   const int BUFSIZE = 4096;
   char buf[BUFSIZE];
diff --git a/tdecore/kdebugrc b/tdecore/kdebugrc
index dbf3ed5..0f77507 100644
--- a/tdecore/kdebugrc
+++ b/tdecore/kdebugrc
@@ -19,7 +19,16 @@
 # For file output you can give a filename by *Filename=<file>
 # otherwise kdebug.dbg in the current directory is used.
 #
-# ekzample:
+# the Default section sets the destination there all output goes to unless 
+# there will be explicitly specefied in apropriate area-number section.
+
+[Default]
+FatalOutput=1
+ErrorOutput=2
+WarnOutput=2
+InfoOutput=4
+
+# Example:
 #
 # For the debug area 100 you want output of debug messages
 # to a file /var/log/dbg.log and error messages as message boxes.
@@ -31,112 +40,6 @@
 # ErrorOutput=1
 # AbortFatal=1
 #
-
 # TDEAccel debug info off
-[125]
-InfoOutput=4
-
-# KCheckAccel debug info off
-[131]
-InfoOutput=4
-
-# TDEAction debug info off
-[129]
-InfoOutput=4
-
-# TDEStartupInfo debug info off
-[172]
-InfoOutput=4
-
-# TDELocale debug info off
-[173]
-InfoOutput=4
-
-# TDEMainWindow debug info off
-[200]
-InfoOutput=4
-
-# KFile debug info off
-[250]
-InfoOutput=4
-
-# TDEIconloader debug info off
-[264]
-InfoOutput=4
-
-# KSpell debug info off
-[750]
-InfoOutput=4
-
-# KPart's mainwindow info off
-[1001]
-InfoOutput=4
-
-# KPart's factory info off
-[1002]
-InfoOutput=4
-
-# KDesktop icons
-[1214]
-InfoOutput=4
-
-# KHotKeys
-[1217]
-InfoOutput=4
-
-# KMail
-[5006]
-InfoOutput=4
-
-# KitchenSync (Syncing Algorithm)
-[5250]
-InfoOutput=4
-
-# calendarsystem debug info off
-[5400]
-InfoOutput=4
-
-# tdeabc/vcard
-[5710]
-InfoOutput=4
-
-# korganizer (verbose)
-[5855]
-InfoOutput=4
-
-# korgac (check)
-[5891]
-InfoOutput=4
-
-# kalarmd check
-[5901]
-InfoOutput=4
-
-# tdeio_http_debug debug info off
-[7113]
-InfoOutput=4
-
-# kbzip2filter's debug info off
-[7118]
-InfoOutput=4
-
-# tdeio_nntp debug info off
-[7114]
-InfoOutput=4
-
-# KRun debug info off
-[7010]
-InfoOutput=4
-
-# KMimeMagic debug info off
-[7018]
-InfoOutput=4
-
-# KGame debug info off
-[11001]
-InfoOutput=4
-
-# KOStore debug info off
-[30002]
-InfoOutput=4
-
+# [125]
+# InfoOutput=4
-- 
1.8.1.5

