Index: /trunk/FACT++/src/dataLogger.cc
===================================================================
--- /trunk/FACT++/src/dataLogger.cc	(revision 10894)
+++ /trunk/FACT++/src/dataLogger.cc	(revision 10895)
@@ -440,6 +440,4 @@
     set<string> fGrouping;
     ///configuration flags
-    bool fHasBlackList;
-    bool fHasWhiteList;
     bool fDebugIsOn;
     float fStatsPeriodDuration;
@@ -602,13 +600,13 @@
 bool DataLogger::ShouldSubscribe(const string& server, const string& service)
 {
-    if (service == "SERVICE_LIST")
+    if (fWhiteList.size()>0 &&
+        (fWhiteList.find(server + "/") == fWhiteList.end()) &&
+        (fWhiteList.find(server + "/" + service) == fWhiteList.end()) &&
+        (fWhiteList.find("/" + service) == fWhiteList.end()))
         return false;
-    if (fHasWhiteList && (fWhiteList.find(server + "/") == fWhiteList.end()) &&
-                         (fWhiteList.find(server + "/" + service) == fWhiteList.end()) &&
-                         (fWhiteList.find("/" + service) == fWhiteList.end()))
-        return false;
-    if (fHasBlackList && ((fBlackList.find(server + "/") != fBlackList.end()) ||
-                          (fBlackList.find(server + "/" + service) != fBlackList.end()) ||
-                          (fBlackList.find("/" + service) != fBlackList.end())))
+
+    if (((fBlackList.find(server + "/") != fBlackList.end()) ||
+         (fBlackList.find(server + "/" + service) != fBlackList.end()) ||
+         (fBlackList.find("/" + service) != fBlackList.end())))
         return false;
 
@@ -1006,5 +1004,5 @@
     AddEvent(fConfigRunNumber, "I", kSM_Ready, kSM_NightlyOpen, kSM_WaitingRun, kSM_BadRunConfig, kSM_Logging)
             (boost::bind(&DataLogger::ConfigureRunNumber, this, _1))
-            ("configure the run number. cannot be done in logging state");
+            ("Configure the run number. Cannot be done in logging state");
 
      //Provide a logging command
@@ -1056,6 +1054,4 @@
 
      //black/white list
-     fHasBlackList = false;
-     fHasWhiteList = false;
      fBlackList.clear();
      fWhiteList.clear();
@@ -1079,9 +1075,9 @@
      AddEvent(fStartStopOpenedFiles, "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
               (boost::bind(&DataLogger::SetOpenedFilesOnOff ,this, _1))
-              ("Can be used to switch the service off which distributes information about the open files.");
+              ("Switch off the service which distributes information about the open files.");
 
      AddEvent(fStartStopNumSubsAndFits, "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
              (boost::bind(&DataLogger::SetNumSubsAndFitsOnOff, this, _1))
-             ("Can be used to switch the service off which distributes information about the number of subscriptions and open files.");
+             ("Switch off the service which distributes information about the number of subscriptions and open files.");
 
      fDestructing = false;
@@ -1697,23 +1693,24 @@
             Message(" -> "+it2->first);
     }
-    if (fHasBlackList)
-    {
-        Message("------------- BLOCK LIST ----------------");
-        for (set<string>::iterator it=fBlackList.begin(); it != fBlackList.end(); it++)
-            Message(*it);
-    }
-    if (fHasWhiteList)
-    {
-            Message("----------- ALLOW LIST ------------------");
-            for (set<string>::iterator it=fWhiteList.begin(); it != fWhiteList.end(); it++)
-                Message(*it);
-    }
-    if (fGrouping.size() != 0)
-    {
-            Message("--------- GROUPING LIST -----------------");
-            Message("The following servers and/or services will be grouping under a single run fits file:");
-            for (set<string>::iterator it=fGrouping.begin(); it != fGrouping.end(); it++)
-                Message(*it);
-    }
+
+    Message("------------- BLOCK LIST ----------------");
+    for (set<string>::iterator it=fBlackList.begin(); it != fBlackList.end(); it++)
+        Message(*it);
+    if (fBlackList.size()==0)
+        Message(" <empty>");
+
+    Message("----------- ALLOW LIST ------------------");
+    for (set<string>::iterator it=fWhiteList.begin(); it != fWhiteList.end(); it++)
+        Message(*it);
+    if (fWhiteList.size()==0)
+        Message(" <empty>");
+
+    Message("--------- GROUPING LIST -----------------");
+    Message("The following servers and/or services will be grouping under a single run fits file:");
+    for (set<string>::iterator it=fGrouping.begin(); it != fGrouping.end(); it++)
+        Message(*it);
+    if (fGrouping.size()==0)
+        Message(" <no grouping>");
+
     Message("-----------------------------------------");
     Message("------ END OF DATA LOGGER STATE ---------");
@@ -2277,13 +2274,17 @@
     groupTable->makeThisCurrent();
     //create appropriate buffer.
-    unsigned char* fitsBuffer = new unsigned char[8 + 3 + 2*maxCharLength + 1]; //+1 for trailling character
-    memset(fitsBuffer, 0, 8 + 3 + 2*maxCharLength + 1);
+    const unsigned int n = 8 + 3 + 2*maxCharLength + 1; //+1 for trailling character
+
+    unsigned char* fitsBuffer = new unsigned char[n];
+    memset(fitsBuffer, 0, n);
+
     char* startOfExtension = reinterpret_cast<char*>(fitsBuffer);
-    char* startOfURI = reinterpret_cast<char*>(&fitsBuffer[8]);
-    char* startOfLocation = reinterpret_cast<char*>(&fitsBuffer[8 + 3]);
-    char* startOfName = reinterpret_cast<char*>(&fitsBuffer[8+3+maxCharLength]);
-
-    sprintf(startOfExtension, "%s", "BINTABLE");
-    sprintf(startOfURI, "%s", "URL");
+    char* startOfURI       = reinterpret_cast<char*>(&fitsBuffer[8]);
+    char* startOfLocation  = reinterpret_cast<char*>(&fitsBuffer[8 + 3]);
+    char* startOfName      = reinterpret_cast<char*>(&fitsBuffer[8+3+maxCharLength]);
+
+    strcpy(startOfExtension, "BINTABLE");
+    strcpy(startOfURI,       "URL");
+
     int i=1;
     for (map<string, vector<string> >::iterator it=filesToGroup.begin(); it!=filesToGroup.end(); it++)
@@ -2292,4 +2293,5 @@
             strcpy(startOfLocation, it->first.c_str());
             strcpy(startOfName, jt->c_str());
+
             if (fDebugIsOn)
             {
@@ -2298,4 +2300,5 @@
                 Debug(str);
             }
+
             int status = 0;
             fits_write_tblbytes(groupFile->fitsPointer(), i, 1, 8+3+2*maxCharLength, fitsBuffer, &status);
@@ -2420,53 +2423,28 @@
     fBlackList.clear();
     fWhiteList.clear();
+
     if (conf.Has("block"))
     {
-        vector<string> vec = conf.Get<vector<string>>("block");
-        if (vec.size() != 0)
-        {
-            fHasBlackList = true;
-            if (fDebugIsOn)
-                Debug("Setting BLOCK list:");
-        }
-        for (vector<string>::iterator it = vec.begin(); it != vec.end(); it++)
-        {
-            fBlackList.insert(*it);
-            if (fDebugIsOn)
-                Debug("                   " + *it);
-        }
-//Adding entries that should ALWAYS be ignored, because of Dim: otherwise the DataLogger would crash
+        const vector<string> vec = conf.Get<vector<string>>("block");
+
+        fBlackList.insert(vec.begin(), vec.end());
+
+        //Adding entries that should ALWAYS be ignored
         fBlackList.insert("DATA_LOGGER/");
         fBlackList.insert("/SERVICE_LIST");
         fBlackList.insert("DIS_DNS/");
     }
+
     if (conf.Has("allow"))
     {
-        vector<string> vec = conf.Get<vector<string>>("allow");
-        if (vec.size() != 0)
-        {
-            fHasWhiteList = true;
-            if (fDebugIsOn)
-                Debug("Setting ALLOW list:");
-        }
-        for (vector<string>::iterator it=vec.begin(); it != vec.end(); it++)
-        {
-            fWhiteList.insert(*it);
-            if (fDebugIsOn)
-                Debug("                   " + *it);
-        }
-    }
+        const vector<string> vec = conf.Get<vector<string>>("allow");
+        fWhiteList.insert(vec.begin(), vec.end());
+    }
+
     //Set the grouping
     if (conf.Has("group"))
     {
-        vector<string> vec = conf.Get<vector<string>>("group");
-        if (vec.size() != 0)
-            if (fDebugIsOn)
-                Debug("Setting GROUPING list:");
-        for (vector<string>::iterator it=vec.begin(); it != vec.end(); it++)
-        {
-            fGrouping.insert(*it);
-            if (fDebugIsOn)
-                Debug("                   " + *it);
-        }
+        const vector<string> vec = conf.Get<vector<string>>("group");
+        fGrouping.insert(vec.begin(), vec.end());
     }
     return true;
