Beim Start einige benoetigte Ordner erstellen.

/data/save und /data/secure/save werden in jedem fall benoetigt.
/data/mail wird fuer das ordnungsgemaesse funktionieren vom Mailer
benoetigt.

Change-Id: I5d1a98fe89f02a56c5f3d52d6e8a1b55865a682b
diff --git a/secure/mailer.c b/secure/mailer.c
index c4f7665..b3d854f 100644
--- a/secure/mailer.c
+++ b/secure/mailer.c
@@ -65,6 +65,7 @@
 
 #include <config.h>
 #include <mail.h>
+#include <files.h>
 #include <wizlevels.h>
 
 // debugging
@@ -122,6 +123,13 @@
             if ( sscanf( tmp[i], "%s %s", s1, s2 ) == 2 )
                 alias[s1] = s2;
     }
+    
+    // Ggf. Ordner erstellen.
+    if(file_size(MAILPATH)==FSIZE_NOFILE)
+    {
+        // LIBDATADIR wird vom Master erstellt, ist also schon vorhanden.
+        mkdir(MAILPATH);
+    }
 }
 
 
diff --git a/secure/master.c b/secure/master.c
index 3d88928..0f25533 100644
--- a/secure/master.c
+++ b/secure/master.c
@@ -65,8 +65,16 @@
 protected void inaugurate_master(int arg) {
 
   set_driver_hook(H_REGEXP_PACKAGE, RE_TRADITIONAL);
-  
+
   efun::configure_object(this_object(), OC_EUID, ROOTID);
+
+  // Bei Neustart wizinfo initialisieren und ggf. Ordner in /data erstellen.
+  if (!arg)
+  {
+    set_extra_wizinfo(0, allocate(BACKBONE_WIZINFO_SIZE));
+    CreateDataDirectories();
+  }
+
   userinfo::create();
   LoadPLDenylists();
 
@@ -77,11 +85,7 @@
   ReloadBanishFile();
   ReloadDeputyFile();
   ReloadInsecureFile();
- 
-  // Bei Neustart wizinfo initialisieren
-  if (!arg)
-    set_extra_wizinfo(0, allocate(BACKBONE_WIZINFO_SIZE));
-  
+
   //simul_efun.c nach inaugurate_master() starten und initialisieren, 
   //(so richtig seh ich den Sinn hier momentan nicht ein...
   //call_out("start_simul_efun",0);
diff --git a/secure/master/misc.c b/secure/master/misc.c
index d8a1f39..5a29276 100644
--- a/secure/master/misc.c
+++ b/secure/master/misc.c
@@ -10,6 +10,7 @@
 #include "/sys/lpctypes.h"
 #include "/sys/object_info.h"
 #include "/sys/interactive_info.h"
+#include "/sys/files.h"
 
 #include "/secure/master.h"
 #include "/mail/post.h"
@@ -773,3 +774,31 @@
   rename("log/call_out_stop","log/call_out_stop.old");
 }
 
+protected void CreateDataDirectories()
+{
+  if(file_size("/"LIBDATADIR)==FSIZE_NOFILE)
+  {
+    mkdir("/"LIBDATADIR);
+  }
+
+  if(file_size(SAVEPATH)==FSIZE_NOFILE)
+  {
+    mkdir(SAVEPATH);
+    // Die Ordner von a bis z erstellen
+    foreach(int n : 'a'..'z')
+    {
+      mkdir(sprintf(SAVEPATH+"%c",n));
+    }
+  }
+
+  if(file_size(SECURESAVEPATH)==FSIZE_NOFILE)
+  {
+    mkdir("/"LIBDATADIR"/"SECUREDIR);
+    mkdir(SECURESAVEPATH);
+    // Die Ordner von a bis z erstellen
+    foreach(int n : 'a'..'z')
+    {
+      mkdir(sprintf(SECURESAVEPATH+"%c",n));
+    }
+  }
+}