Index: trunk/FACT++/src/dimctrl.cc
===================================================================
--- trunk/FACT++/src/dimctrl.cc	(revision 13900)
+++ trunk/FACT++/src/dimctrl.cc	(revision 13901)
@@ -1,4 +1,6 @@
 #ifndef FACT_DimCtrl
 #define FACT_DimCtrl
+
+#include <boost/lexical_cast.hpp>
 
 #include "Main.h"
@@ -168,38 +170,42 @@
     }
 
+    int ChangeState(int qos, const Time &time=Time())
+    {
+        ostringstream pid;
+        pid << getpid();
+
+        fLabel = qos;
+
+        string msg;
+        switch (fLabel)
+        {
+        case -4: msg = "Boot:"+boost::lexical_cast<string>(Readline::GetScriptDepth()); break;
+        case -3: msg = "End";   break;
+        case -2: msg = "Load";  break;
+        case -1: msg = "Start"; break;
+        default:
+            {
+                ostringstream out;
+                out << "Label " << fLabel;
+                msg = out.str();
+            }
+        }
+
+        msg += ": "+Readline::GetScript()+" [";
+        if (!fScriptUser.empty())
+            msg += fScriptUser+":"+pid.str();
+        msg += "]";
+
+        if (fDebug)
+            MessageDimTX::Write(time, Line(msg, fLabel<-1 ? '=' :'-'), 90);
+
+        fSrvState.setQuality(fLabel);
+        return fSrvState.Update(msg);
+    }
+
     int Write(const Time &time, const std::string &txt, int qos=kMessage)
     {
         if (txt=="")
-        {
-            ostringstream pid;
-            pid << getpid();
-
-            fLabel = qos;
-
-            string msg;
-            switch (fLabel)
-            {
-            case -3: msg = "End";   break;
-            case -2: msg = "Load";  break;
-            case -1: msg = "Start"; break;
-            default:
-                {
-                    ostringstream out;
-                    out << "Label " << fLabel;
-                    msg = out.str();
-                }
-            }
-
-            msg += ": "+Readline::GetScript()+" [";
-            if (!fScriptUser.empty())
-                msg += fScriptUser+":"+pid.str();
-            msg += "]";
-
-            if (fDebug)
-                MessageDimTX::Write(time, Line(msg, fLabel<-1 ? '=' :'-'), 90);
-
-            fSrvState.setQuality(fLabel);
-            return fSrvState.Update(msg);
-        }
+            return ChangeState(qos, time);
 
         if (qos<fVerbosity)
@@ -249,6 +255,5 @@
             DimServer::start("DIM_CONTROL");
             //sleep(1);
-            fSrvState.setQuality(-3);
-            fSrvState.Update("[boot]");
+            ChangeState(-4);
         }
 
