add: if ( !KontactApp::start() ) { kdError() << "Kontact is already running!" << endl; return 0;
context: int main(int argc, char **argv){  KAboutData about( "kontact", I18N_NOOP( "Kontact" ), version, description,                    KAboutData::License_GPL, I18N_NOOP("(C) 2001-2003 The Kontact developers"), 0, "http://kontact.kde.org", "kde-pim@kde.org" );  about.addAuthor( "Daniel Molkentin", 0, "molkentin@kde.org" );  about.addAuthor( "Don Sanders", 0, "sanders@kde.org" );  about.addAuthor( "Cornelius Schumacher", 0, "schumacher@kde.org" );  about.addAuthor( "Tobias Koenig", 0, "tokoe@kde.org" );  about.addAuthor( "Sven Lüppken", 0, "sven@kde.org" );  about.addAuthor( "Matthias Hoelzer-Kluepfel", I18N_NOOP("Original Author"), "mhk@kde.org" );  KCmdLineArgs::init( argc, argv, &about );  KUniqueApplication app;  // show splash#if (QT_VERSION-0 >= 0x030200)  QPixmap splashPixmap( UserIcon( "splash" ) );  QSplashScreen *splash = new QSplashScreen( splashPixmap );  splash->show();#else  Kontact::Splash *splash = new Kontact::Splash( 0, "splash" );  splash->show();#endif  // see if we are starting with session management  if ( app.isRestored() ) {      if (Kontact::MainWindow::canBeRestored(1))	  //only restore a single main window! (Don);	  (new Kontact::MainWindow)->restore(1);  } else {    // no session.. just start up normally    Kontact::MainWindow *mw = new Kontact::MainWindow;     mw->show();  }  // delete splash  delete splash;  bool ret = app.exec();  while (KMainWindow::memberList->first())      delete KMainWindow::memberList->first();  return ret;}