DATADIR = datadir;
   CACHEID = cacheid;
 
+  if ( cacheid.find("_") != -1 ) {
+    if(log) *log << "CCACHE: Invalid cacheid \"" << cacheid << "\" given. Cacheids must not contain underscores!" << endl << flush;
+    exit(1);
+  }
+
   configMem = (char*)malloc(configMemSize);
   tmpConfig = (char*)malloc(configMemSize);
 
 
   inchar = new char [infile.size()+1];
   strcpy (inchar, infile.c_str());
-  
+
   inParts = strtok( inchar, "_" );
   for(int iPart=0; inParts!=NULL; iPart++)
     {
 
       switch(iPart)
        {
-       case 1: if(inParts != CACHEID) return false; break;
+       case 1: if(inParts != CACHEID) {
+           return false; 
+           break;
+         }
        case 2: 
          if (atoi(inParts) > NEQUI) 
            return false;