Index: drsdaq/DAQReadout.cc
===================================================================
--- drsdaq/DAQReadout.cc	(revision 226)
+++ drsdaq/DAQReadout.cc	(revision 229)
@@ -90,12 +90,14 @@
   MinDelay  			= 1;
 
-  // Get configuration data
-  fRawDataPath = GetConfig("RawDataPath");
-  fCalibDataPath = GetConfig("CalibDataPath");
-  fFirstSample = atoi(GetConfig("FirstSample"));
-  fSamples = atoi(GetConfig("Samples"));
-  fMinDiskSpaceMB = atoi(GetConfig("MinDiskSpaceMB"));
-  fMaxFileSizeMB = atoi(GetConfig("MaxFileSizeMB"));
-  fDefaultFrequency = atof(GetConfig("DefaultFrequency"));
+  // Get configuration data (static needed for c_str() pointers to remain valid after constructor finished)
+  static std::string _RawDataPath = GetConfig("RawDataPath");
+  static std::string _CalibDataPath = GetConfig("CalibDataPath");
+  fRawDataPath = _RawDataPath.c_str();
+  fCalibDataPath = _CalibDataPath.c_str();
+  fFirstSample = atoi(GetConfig("FirstSample").c_str());
+  fSamples = atoi(GetConfig("Samples").c_str());
+  fMinDiskSpaceMB = atoi(GetConfig("MinDiskSpaceMB").c_str());
+  fMaxFileSizeMB = atoi(GetConfig("MaxFileSizeMB").c_str());
+  fDefaultFrequency = atof(GetConfig("DefaultFrequency").c_str());
 
   if (fFirstSample < 0 || fFirstSample > kNumberOfBins || fSamples > kNumberOfBins) {
@@ -1417,5 +1419,5 @@
 
 // Return current available storage space in given directory
-int CheckDisk(char *Directory) {
+int CheckDisk(const char *Directory) {
   struct statfs FileSystemStats;
 
Index: drsdaq/DAQReadout.h
===================================================================
--- drsdaq/DAQReadout.h	(revision 226)
+++ drsdaq/DAQReadout.h	(revision 229)
@@ -52,6 +52,6 @@
 
     // Configuration data
-    char *fCalibDataPath;
-    char *fRawDataPath;
+    const char *fCalibDataPath;
+    const char *fRawDataPath;
     int fMinDiskSpaceMB;   // Minimum required disk space in MBytes
     int fMaxFileSizeMB;    // Maximum File size in Bytes 
@@ -145,5 +145,5 @@
 bool Match(const char*, const char*);
 int ParseInput(char*, const char *Param[]);
-int CheckDisk(char*);
+int CheckDisk(const char*);
 
 #endif
Index: drsdaq/HVFeedback.cc
===================================================================
--- drsdaq/HVFeedback.cc	(revision 226)
+++ drsdaq/HVFeedback.cc	(revision 229)
@@ -22,4 +22,6 @@
 };
 
+using namespace std;
+
 //
 // Constructor: Initialise feedback 
@@ -45,32 +47,30 @@
 
   // Get configuration data
-  fLedTrigBoard = atoi(m->GetConfig("TrigBoard"));
-  fLedTrigChannel = atoi(m->GetConfig("TrigChannel"));
-  fLedTrigChip = atoi(m->GetConfig("TrigChip"));
-  fLedTrigSample = atoi(m->GetConfig("TrigSample"));
-  fLedTrigThreshold = atoi(m->GetConfig("TrigThreshold"));
-  fLedSignalSample = atoi(m->GetConfig("SignalSample"));
-  fLedBaselineSample = atoi(m->GetConfig("BaselineSample"));
-  fIntHalfWidth = atoi(m->GetConfig("IntHalfWidth"));
-  fDefaultNumAverage = atoi(m->GetConfig("DefaultNumAverage"));
-
-  char *Token = strtok(m->GetConfig("DefaultResponse"), " \t");
+  fLedTrigBoard = atoi(m->GetConfig("TrigBoard").c_str());
+  fLedTrigChannel = atoi(m->GetConfig("TrigChannel").c_str());
+  fLedTrigChip = atoi(m->GetConfig("TrigChip").c_str());
+  fLedTrigSample = atoi(m->GetConfig("TrigSample").c_str());
+  fLedTrigThreshold = atoi(m->GetConfig("TrigThreshold").c_str());
+  fLedSignalSample = atoi(m->GetConfig("SignalSample").c_str());
+  fLedBaselineSample = atoi(m->GetConfig("BaselineSample").c_str());
+  fIntHalfWidth = atoi(m->GetConfig("IntHalfWidth").c_str());
+  fDefaultNumAverage = atoi(m->GetConfig("DefaultNumAverage").c_str());
+
+  vector<string> Token = m->Tokenize(m->GetConfig("DefaultResponse"), " \t");
+  unsigned int N = 0;
   for (int i=0; i<m->NumBoards; i++) {
 	for (int j=0; j<fNumberOfChips; j++) {
 	  for (int k=0; k<fNumberOfChannels; k++) {
-		if (Token == NULL) break;
-    	Response[i][j][k] = (float) atof(Token);
-		Token = strtok(NULL, " \t");
+		if (N < Token.size()) Response[i][j][k] = (float) atof(Token[N++].c_str());
 	  }
 	}
   }
 
-  Token = strtok(m->GetConfig("DefaultTarget"), " \t");
+  Token = m->Tokenize(m->GetConfig("DefaultTarget"), " \t");
+  N = 0;
   for (int i=0; i<m->NumBoards; i++) {
 	for (int j=0; j<fNumberOfChips; j++) {
 	  for (int k=0; k<fNumberOfChannels; k++) {
-		if (Token == NULL) break;
-    	Target[i][j][k] = (float) atof(Token);
-		Token = strtok(NULL, " \t");
+		if (N < Token.size()) Target[i][j][k] = (float) atof(Token[N++].c_str());
 	  }
 	}
@@ -87,5 +87,5 @@
 
   // Initial state
-  Gain = atof(m->GetConfig("DefaultGain"));
+  Gain = atof(m->GetConfig("DefaultGain").c_str());
   SetFBMode(FB_Off);
   SetNumAverages(fDefaultNumAverage);
Index: drsdaq/HVFeedback.h
===================================================================
--- drsdaq/HVFeedback.h	(revision 226)
+++ drsdaq/HVFeedback.h	(revision 229)
@@ -7,4 +7,5 @@
 #include <math.h>
 #include <sstream>
+#include <vector>
 
 #include "RawDataCTX.h"
