Index: /Evidence/DColl.cc
===================================================================
--- /Evidence/DColl.cc	(revision 159)
+++ /Evidence/DColl.cc	(revision 160)
@@ -277,15 +277,24 @@
 	time_t Time = time(NULL);
 	struct tm *T = localtime(&Time);
-	ostringstream Buf;
-	
-	// Generate file name from date
+	
+	// Get time structure with date rollover
 	if(T->tm_hour >= DATE_ROLLOVER) T->tm_mday++;
 	if (mktime(T) == -1) State(ERROR, "mktime() failed, check filename");
-	Buf << DataDir << "/" << T->tm_year+1900 << setw(2) << setfill('0') << T->tm_mon+1 << T->tm_mday << ".slow";
-	
-	// Copy filename to permanent buffer
-	delete[] Filename;
-	Filename = new char [Buf.str().size()+1];
-	strcpy(Filename, Buf.str().c_str());
+
+	// Create direcory if not existing (ignore error if already existing)
+	char *Dir;
+	if (asprintf(&Dir, "%s/%d%02d",DataDir, T->tm_year+1900, T->tm_mon + 1) == -1) {
+	  State(FATAL, "asprintf() failed, could not create direcory name");	
+	}
+	if(mkdir(Dir, S_IRWXU|S_IRWXG)==-1 && errno!=EEXIST) {
+	  State(FATAL, "Could not create direcory '%s' (%s)", Dir, strerror(errno));
+	}
+
+	// Create filename
+	free(Filename);
+	if (asprintf(&Filename, "%s/%d%02d%02d.slow", Dir, T->tm_year+1900, T->tm_mon+1, T->tm_mday) == 1) {
+	  State(FATAL, "asprintf() failed, could not create filename");		  
+	}
+	free(Dir);
 	
 	// Open file
