Index: cpp/frams/errmgr/errmanager.cpp
===================================================================
--- cpp/frams/errmgr/errmanager.cpp	(revision 335)
+++ cpp/frams/errmgr/errmanager.cpp	(revision 336)
@@ -8,19 +8,22 @@
 void _FramMessageSingleLine(const char *o, const char *m, const char *txt, int w)
 {
-tlsGetRef(errmgr_instance).send(o,m,txt,w);
+	tlsGetRef(errmgr_instance).send(o, m, txt, w);
 }
 
-THREAD_LOCAL_DEF(ErrorManager,errmgr_instance);
+THREAD_LOCAL_DEF(ErrorManager, errmgr_instance);
 
-void ErrorManager::send(int level,const char *o,const char *m,const char *bl,int w)
+void ErrorManager::send(int level, const char *o, const char *m, const char *bl, int w)
 {
-if (level>=handlers.size()) level=handlers.size()-1;
-bool blocked=0;
-for(int i=level;i>=0;i--)
+	if (level >= handlers.size()) level = handlers.size() - 1;
+	bool blocked = 0;
+	for (int i = level; i >= 0; i--)
 	{
-	ErrorHandlerBase *r=handlers(i);
-	if ((!blocked)||(r->options & ErrorHandlerBase::CannotBeBlocked))
-		r->handle(o,m,bl,w);
-	if (!(r->options & ErrorHandlerBase::DontBlock)) blocked=1;
+		ErrorHandlerBase *r = handlers(i);
+		if ((!(r->options & ErrorHandlerBase::Paused)) &&
+			((!blocked) || (r->options & ErrorHandlerBase::CannotBeBlocked)))
+		{
+			r->handle(o, m, bl, w);
+			if (!(r->options & ErrorHandlerBase::DontBlock)) blocked = 1;
+		}
 	}
 }
@@ -28,47 +31,47 @@
 int ErrorManager::add(ErrorHandlerBase *h)
 {
-h->mgr=this;
-handlers+=h;
-return handlers.size()-1;
+	h->mgr = this;
+	handlers += h;
+	return handlers.size() - 1;
 }
 
 void ErrorManager::remove(int i)
 {
-ErrorHandlerBase *h=handlers(i);
-h->mgr=0;
-handlers.remove(i);
+	ErrorHandlerBase *h = handlers(i);
+	h->mgr = 0;
+	handlers.remove(i);
 }
 
 void ErrorManager::remove(ErrorHandlerBase *h)
 {
-int i;
-if ((i=handlers.find(h))<0) return;
-remove(i);
+	int i;
+	if ((i = handlers.find(h)) < 0) return;
+	remove(i);
 }
 
 void ErrorManager::removeAll()
 {
-while(handlers.size()>0)
-	remove(handlers.size()-1);
+	while (handlers.size() > 0)
+		remove(handlers.size() - 1);
 }
 
 //////////////////////////////////
 
-void ErrorHandlerBase::send(const char *o,const char *m,const char *bl,int w)
+void ErrorHandlerBase::send(const char *o, const char *m, const char *bl, int w)
 {
-if (!isEnabled()) return;
-int level=mgr->find(this);
-if (level>=0) mgr->send(level-1,o,m,bl,w);
+	if (!isEnabled()) return;
+	int level = mgr->find(this);
+	if (level >= 0) mgr->send(level - 1, o, m, bl, w);
 }
 
-void ErrorHandlerBase::FMprintf(const char *o,const char *m,int w,const char *bl, ...)
+void ErrorHandlerBase::FMprintf(const char *o, const char *m, int w, const char *bl, ...)
 {
-if (!isEnabled()) return;
-string buf;
-va_list argptr;
-va_start(argptr,bl);
-buf=ssprintf_va(bl,argptr);
-va_end(argptr);
-send(o,m,buf.c_str(),w);
+	if (!isEnabled()) return;
+	string buf;
+	va_list argptr;
+	va_start(argptr, bl);
+	buf = ssprintf_va(bl, argptr);
+	va_end(argptr);
+	send(o, m, buf.c_str(), w);
 }
 
@@ -76,33 +79,45 @@
 void ErrorHandlerBase::enable()
 {
-if (isEnabled()) return;
-tlsGetRef(errmgr_instance).add(this);
+	if (isEnabled()) return;
+	tlsGetRef(errmgr_instance).add(this);
 }
 
 void ErrorHandlerBase::disable()
 {
-if (!isEnabled()) return;
-tlsGetRef(errmgr_instance).remove(this);
+	if (!isEnabled()) return;
+	tlsGetRef(errmgr_instance).remove(this);
+}
+
+void ErrorHandlerBase::pause()
+{
+	if (isPaused()) return;
+	options |= Paused;
+}
+
+void ErrorHandlerBase::resume()
+{
+	if (!isPaused()) return;
+	options &= ~Paused;
 }
 
 /////////////////////////////////
 
-void ErrorHandler::handle(const char *o,const char *m,const char *bl,int w)
+void ErrorHandler::handle(const char *o, const char *m, const char *bl, int w)
 {
-if (w>maxlevel) maxlevel=w;
-if (w>=FMLV_INFO) infocount++;
-if (w>=FMLV_WARN) warncount++;
-if (w>=FMLV_ERROR) errcount++;
+	if (w > maxlevel) maxlevel = w;
+	if (w >= FMLV_INFO) infocount++;
+	if (w >= FMLV_WARN) warncount++;
+	if (w >= FMLV_ERROR) errcount++;
 
-if (w>=storlevel)
+	if (w >= storlevel)
 	{
-	storcount++;
-	if (options & (StoreFirstMessage|StoreAllMessages))
+		storcount++;
+		if (options & (StoreFirstMessage | StoreAllMessages))
 		{
-		if (!((options&StoreFirstMessage)&&(msgs.len()>0)))
+			if (!((options&StoreFirstMessage) && (msgs.len() > 0)))
 			{
-			if (msgs.len()>0) msgs+='\n';
-			msgs+=o; msgs+="::"; msgs+=m;
-			msgs+=" - "; msgs+=bl;
+				if (msgs.len() > 0) msgs += '\n';
+				msgs += o; msgs += "::"; msgs += m;
+				msgs += " - "; msgs += bl;
 			}
 		}
Index: cpp/frams/errmgr/errmanager.h
===================================================================
--- cpp/frams/errmgr/errmanager.h	(revision 335)
+++ cpp/frams/errmgr/errmanager.h	(revision 336)
@@ -15,19 +15,21 @@
 class ErrorManager
 {
-friend class ErrorHandlerBase;
-SListTempl<ErrorHandlerBase*> handlers;
-void send(int level,const char *o,const char *m,const char *bl,int w);
-  public:
-int find(ErrorHandlerBase *r) {return handlers.find(r);}
-int add(ErrorHandlerBase *r);
-void remove(int i);
-void remove(ErrorHandlerBase *r);
-void removeAll();
-void send(const char *o,const char *m,const char *bl,int w)
-	{send(handlers.size()-1,o,m,bl,w);}
-~ErrorManager() {removeAll();}
+	friend class ErrorHandlerBase;
+	SListTempl<ErrorHandlerBase*> handlers;
+	void send(int level, const char *o, const char *m, const char *bl, int w);
+public:
+	int find(ErrorHandlerBase *r) { return handlers.find(r); }
+	int add(ErrorHandlerBase *r);
+	void remove(int i);
+	void remove(ErrorHandlerBase *r);
+	void removeAll();
+	void send(const char *o, const char *m, const char *bl, int w)
+	{
+		send(handlers.size() - 1, o, m, bl, w);
+	}
+	~ErrorManager() { removeAll(); }
 };
 
-extern THREAD_LOCAL_DECL(ErrorManager,errmgr_instance);
+extern THREAD_LOCAL_DECL(ErrorManager, errmgr_instance);
 
 ////////////////////////////////////////
@@ -35,70 +37,82 @@
 class ErrorHandlerBase
 {
-friend class ErrorManager;
-  protected:
-ErrorManager* mgr;
-int options;
+	friend class ErrorManager;
+protected:
+	ErrorManager* mgr;
+	int options;
 
-  public:
+public:
 
-enum HandlerOptions
- { DontBlock=1, CannotBeBlocked=2, DontEnable=4 };
+	enum HandlerOptions
+	{
+		DontBlock = 1, CannotBeBlocked = 2, DontEnable = 4, Paused = 8
+	};
 
-void FMprintf(const char *o,const char *m,int w,const char *bl, ...);
-void send(const char *o,const char *m,const char *bl,int w);
+	void FMprintf(const char *o, const char *m, int w, const char *bl, ...);
+	void send(const char *o, const char *m, const char *bl, int w);
 
-bool isEnabled() {return mgr?1:0;}
-void enable();
-void disable();
+	bool isEnabled() { return mgr ? 1 : 0; }
+	void enable();
+	void disable();
+	bool isPaused() { return (options & Paused) != 0; }
+	void pause();
+	void resume();
 
-ErrorHandlerBase(int opts=0):mgr(0),options(opts)
-	{if (!(options&DontEnable)) enable();}
-virtual ~ErrorHandlerBase()
-	{disable();}
+	ErrorHandlerBase(int opts = 0) :mgr(0), options(opts)
+	{
+		if (!(options&DontEnable)) enable();
+	}
+	virtual ~ErrorHandlerBase()
+	{
+		disable();
+	}
 
-virtual void handle(const char *o,const char *m,const char *bl,int w) {}
+	virtual void handle(const char *o, const char *m, const char *bl, int w) {}
 };
 
 ///////////////////////////////////////////
 
-class ErrorHandler: public ErrorHandlerBase
+class ErrorHandler : public ErrorHandlerBase
 {
-  protected:
-int maxlevel,errcount,warncount,storlevel,storcount,infocount;
-SString msgs;
+protected:
+	int maxlevel, errcount, warncount, storlevel, storcount, infocount;
+	SString msgs;
 
-  public:
+public:
 
-void reset() {maxlevel=FMLV_INFO-1; errcount=warncount=storcount=infocount=0; msgs=0;}
+	void reset() { maxlevel = FMLV_INFO - 1; errcount = warncount = storcount = infocount = 0; msgs = 0; }
 
-enum Options2
- { StoreFirstMessage=8, StoreAllMessages=16 };
+	enum Options2
+	{
+		StoreFirstMessage = 16, StoreAllMessages = 32
+	};
 
-int getErrorCount()       {return errcount;}
-int getWarningCount()     {return warncount;}
-int getInfoCount()        {return infocount;}
-int getStoredCount()      {return storcount;}
-int getErrorLevel()       {return maxlevel;}
-const SString& getMessages() {return msgs;}
+	int getErrorCount()       { return errcount; }
+	int getWarningCount()     { return warncount; }
+	int getInfoCount()        { return infocount; }
+	int getStoredCount()      { return storcount; }
+	int getErrorLevel()       { return maxlevel; }
+	const SString& getMessages() { return msgs; }
 
-ErrorHandler(int opts=0,int store=FMLV_ERROR):ErrorHandlerBase(opts),storlevel(store)
-	{reset();}
+	ErrorHandler(int opts = 0, int store = FMLV_ERROR) :ErrorHandlerBase(opts), storlevel(store)
+	{
+		reset();
+	}
 
-void handle(const char *o,const char *m,const char *bl,int w);
+	void handle(const char *o, const char *m, const char *bl, int w);
 };
 
-class ErrorRedirector: public ErrorHandlerBase
+class ErrorRedirector : public ErrorHandlerBase
 {
 	ErrorManager *other_mgr;
 public:
 	ErrorRedirector(ErrorManager *om)
-		:ErrorHandlerBase(),other_mgr(om) {}
+		:ErrorHandlerBase(), other_mgr(om) {}
 
-	void handle(const char *o,const char *m,const char *bl,int w)
-		{
-		other_mgr->send(o,m,bl,w);
-		}
+	void handle(const char *o, const char *m, const char *bl, int w)
+	{
+		other_mgr->send(o, m, bl, w);
+	}
 };
 
 #endif
-
Index: cpp/frams/errmgr/stdouterr.cpp
===================================================================
--- cpp/frams/errmgr/stdouterr.cpp	(revision 335)
+++ cpp/frams/errmgr/stdouterr.cpp	(revision 336)
@@ -14,10 +14,10 @@
 	if (w < -1) w = -1; else if (w>3) w = 3;
 #ifdef SHP
-	AppLog("[%s] %s::%s - %s\n",MSG_LEVEL[w+1],o,m,bl);
+	AppLog("[%s] %s.%s: %s\n",MSG_LEVEL[w+1],o,m,bl);
 #else
 	if (file)
-		file->printf("[%s] %s::%s - %s\n", MSG_LEVEL[w + 1], o, m, bl);
+		file->printf("[%s] %s.%s: %s\n", MSG_LEVEL[w + 1], o, m, bl);
 	else
-		printf("[%s] %s::%s - %s\n", MSG_LEVEL[w + 1], o, m, bl);
+		printf("[%s] %s.%s: %s\n", MSG_LEVEL[w + 1], o, m, bl);
 #endif
 }
Index: cpp/frams/errmgr/stdouterr.h
===================================================================
--- cpp/frams/errmgr/stdouterr.h	(revision 335)
+++ cpp/frams/errmgr/stdouterr.h	(revision 336)
@@ -9,10 +9,10 @@
 #include <frams/virtfile/virtfile.h>
 
-class StdoutErrorHandler: public ErrorHandlerBase
+class StdoutErrorHandler : public ErrorHandlerBase
 {
-VirtFILE *file;
-  public:
-StdoutErrorHandler(int opts=DontBlock,VirtFILE *_file=NULL):ErrorHandlerBase(opts),file(_file) {}
-void handle(const char *o,const char *m,const char *bl,int w);
+	VirtFILE *file;
+public:
+	StdoutErrorHandler(int opts = DontBlock, VirtFILE *_file = NULL) :ErrorHandlerBase(opts), file(_file) {}
+	void handle(const char *o, const char *m, const char *bl, int w);
 };
 
