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));
+ }
+ }
+}