Index: trunk/BNC/src/PPP/pppMain.cpp
===================================================================
--- trunk/BNC/src/PPP/pppMain.cpp	(revision 5904)
+++ trunk/BNC/src/PPP/pppMain.cpp	(revision 5905)
@@ -62,5 +62,5 @@
 // 
 //////////////////////////////////////////////////////////////////////////////
-void t_pppMain::start() {
+void t_pppMain::start(bool ownThread) {
   if (_running) {
     return;
@@ -73,6 +73,13 @@
     while (iOpt.hasNext()) {
       const t_pppOptions* opt = iOpt.next();
-      t_pppThread* pppThread = new t_pppThread(opt);
-      pppThread->start();
+      t_pppThread* pppThread = new t_pppThread(ownThread, opt);
+      if (ownThread) {
+        cout << "start" << endl;
+        pppThread->start();
+      }
+      else {
+        cout << "run" << endl;
+        pppThread->run();
+      }
       _pppThreads << pppThread;
       _running = true;
Index: trunk/BNC/src/PPP/pppMain.h
===================================================================
--- trunk/BNC/src/PPP/pppMain.h	(revision 5904)
+++ trunk/BNC/src/PPP/pppMain.h	(revision 5905)
@@ -10,8 +10,8 @@
 class t_pppMain {
  public:
-  t_pppMain();                                                      
+  t_pppMain();
   ~t_pppMain();
-  void start();                                                     
-  void stop();                                                     
+  void start(bool ownThread);
+  void stop();
 
  private:
@@ -20,8 +20,8 @@
   QList<t_pppOptions*> _options;
   QList<t_pppThread*>  _pppThreads;
-  QString              _logFile;
-  QString              _nmeaFile;
-  int                  _nmeaPort;
-  bool                 _running;
+  QString  _logFile;
+  QString  _nmeaFile;
+  int      _nmeaPort;
+  bool     _running;
 };
 
Index: trunk/BNC/src/PPP/pppThread.cpp
===================================================================
--- trunk/BNC/src/PPP/pppThread.cpp	(revision 5904)
+++ trunk/BNC/src/PPP/pppThread.cpp	(revision 5905)
@@ -55,7 +55,9 @@
 // Constructor
 ////////////////////////////////////////////////////////////////////////////
-t_pppThread::t_pppThread(const t_pppOptions* opt) : QThread(0) {
-  _opt    = opt;
-  _pppRun = 0;
+t_pppThread::t_pppThread(bool ownThread, const t_pppOptions* opt) : QThread(0) {
+
+  _ownThread = ownThread;
+  _opt       = opt;
+  _pppRun    = 0;
 
   connect(this, SIGNAL(finished()), this, SLOT(deleteLater()));
@@ -79,5 +81,7 @@
     _pppRun = new t_pppRun(_opt);
     if (_opt->_realTime) {
-      QThread::exec();
+      if (_ownThread) {
+        QThread::exec();
+      }
     }
     else {
Index: trunk/BNC/src/PPP/pppThread.h
===================================================================
--- trunk/BNC/src/PPP/pppThread.h	(revision 5904)
+++ trunk/BNC/src/PPP/pppThread.h	(revision 5905)
@@ -16,5 +16,5 @@
  Q_OBJECT
  public:
-  t_pppThread(const t_pppOptions* opt);
+  t_pppThread(bool ownThread, const t_pppOptions* opt);
   ~t_pppThread();
   virtual void run();
@@ -25,4 +25,5 @@
 
  private:
+  bool                _ownThread;
   const t_pppOptions* _opt;
   t_pppRun*           _pppRun;
Index: trunk/BNC/src/bnccore.cpp
===================================================================
--- trunk/BNC/src/bnccore.cpp	(revision 5904)
+++ trunk/BNC/src/bnccore.cpp	(revision 5905)
@@ -872,6 +872,6 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void t_bncCore::startPPP() {
-  _pppMain->start();
+void t_bncCore::startPPP(bool ownThread) {
+  _pppMain->start(ownThread);
 }
 
Index: trunk/BNC/src/bnccore.h
===================================================================
--- trunk/BNC/src/bnccore.h	(revision 5904)
+++ trunk/BNC/src/bnccore.h	(revision 5905)
@@ -71,5 +71,5 @@
   void setMainWindow(QWidget* mainWindow){_mainWindow = mainWindow;}
   bool GUIenabled() const {return _GUIenabled;}
-  void startPPP();
+  void startPPP(bool ownThread);
   void stopPPP();
 
Index: trunk/BNC/src/bncmain.cpp
===================================================================
--- trunk/BNC/src/bncmain.cpp	(revision 5904)
+++ trunk/BNC/src/bncmain.cpp	(revision 5905)
@@ -189,12 +189,10 @@
     BNC_CORE->slotMessage("========== Start BNC v" BNCVERSION " =========", true);
 
-    // PPP Client(s) (in separate threads)
-    // -----------------------------------    
-    BNC_CORE->startPPP();
-
     // Normal case - data from Internet
     // --------------------------------
     if ( rawFileName.isEmpty() ) {
       BNC_CORE->setMode(t_bncCore::nonInteractive);
+      BNC_CORE->startPPP(true);
+
       caster->readMountPoints();
       if (caster->numStations() == 0) {
@@ -207,6 +205,7 @@
     else {
       BNC_CORE->setMode(t_bncCore::batchPostProcessing);
-      bncRawFile*   rawFile   = new bncRawFile(rawFileName, "", 
-                                               bncRawFile::input);
+      BNC_CORE->startPPP(false);
+
+      bncRawFile*   rawFile   = new bncRawFile(rawFileName, "", bncRawFile::input);
       bncGetThread* getThread = new bncGetThread(rawFile);
       caster->addGetThread(getThread, true);
Index: trunk/BNC/src/bncwindow.cpp
===================================================================
--- trunk/BNC/src/bncwindow.cpp	(revision 5904)
+++ trunk/BNC/src/bncwindow.cpp	(revision 5905)
@@ -1650,5 +1650,5 @@
     startRealTime();
   }
-  BNC_CORE->startPPP();
+  BNC_CORE->startPPP(true);
 }
 
