Einigen Code verlegt nach files.c
Change-Id: Ic1128e9c0995a16d81c21348891d735559548630
diff --git a/secure/simul_efun/files.c b/secure/simul_efun/files.c
index 291bef6..d2b81a5 100644
--- a/secure/simul_efun/files.c
+++ b/secure/simul_efun/files.c
@@ -43,3 +43,64 @@
return funcall(bind_lambda(#'efun::write_file, previous_object()),
file, str, flags);
}
+
+// * Bei 50k Groesse Log-File rotieren
+varargs int log_file(string file, string txt, int size_to_break)
+{
+ mixed *st;
+
+ file="/log/"+file;
+ file=implode((efun::explode(file,"/")-({".."})),"/");
+
+ if (!funcall(bind_lambda(#'efun::call_other,PO),"secure/master",//')
+ "valid_write",file,geteuid(PO),"log_file",PO))
+ return 0;
+ if ( size_to_break >= 0 & (
+ sizeof(st = get_dir(file,2) ) && st[0] >= (size_to_break|MAX_LOG_SIZE)))
+ catch(rename(file, file + ".old");publish); /* No panic if failure */
+
+ return(write_file(file,txt));
+}
+
+#if !__EFUN_DEFINED__(copy_file)
+#define MAXLEN 50000
+public nomask int copy_file(string source, string dest)
+{
+
+ int ptr;
+ string bytes;
+
+ set_this_object(previous_object());
+ if (!sizeof(source)||!sizeof(dest)||source==dest||(file_size(source)==-1)||
+ (!call_other(master(),"valid_read",source,
+ getuid(this_interactive()||
+ previous_object()),"read_file",previous_object()))||
+ (!call_other(master(),"valid_read",source,
+ getuid(this_interactive()||
+ previous_object()),"write_file",previous_object())))
+ return 1;
+ switch (file_size(dest))
+ {
+ case -1:
+ break;
+ case -2:
+ if (dest[<1]!='/') dest+="/";
+ dest+=efun::explode(source,"/")[<1];
+ if (file_size(dest)==-2) return 1;
+ if (file_size(dest)!=-1) break;
+ default:
+ if (!rm(dest)) return 1;
+ break;
+ }
+ do
+ {
+ bytes = read_bytes(source, ptr, MAXLEN); ptr += MAXLEN;
+ if (!bytes) bytes="";
+ write_file(dest, bytes);
+ }
+ while(sizeof(bytes) == MAXLEN);
+ return 0;
+}
+#endif //!__EFUN_DEFINED__(copy_file)
+
+
diff --git a/secure/simul_efun/simul_efun.c b/secure/simul_efun/simul_efun.c
index e36d141..f5583db 100644
--- a/secure/simul_efun/simul_efun.c
+++ b/secure/simul_efun/simul_efun.c
@@ -392,22 +392,6 @@
return(0); //sonst
}
-// * Bei 50k Groesse Log-File rotieren
-varargs int log_file(string file, string txt, int size_to_break) {
- mixed *st;
-
- file="/log/"+file;
- file=implode((efun::explode(file,"/")-({".."})),"/");
-// tell_object(find_player("jof"),sprintf("LOG FILE: %O -> %O\n",previous_object(),file));
- if (!funcall(bind_lambda(#'efun::call_other,PO),"secure/master",//')
- "valid_write",file,geteuid(PO),"log_file",PO))
- return 0;
- if ( size_to_break >= 0 & (
- sizeof(st = get_dir(file,2) ) && st[0] >= (size_to_break|MAX_LOG_SIZE)))
- catch(rename(file, file + ".old");publish); /* No panic if failure */
- return(write_file(file,txt));
-}
-
// * Magier-Level abfragen
int query_wiz_level(mixed player) {
return (int)"/secure/master"->query_wiz_level(player);
@@ -931,12 +915,12 @@
if (name[0] != '#')
{
// abs. Pfad erzeugen *seufz*
- if (name[0] != '#' && name[0]!='/')
+ if (name[0]!='/')
name = "/" + name;
// wenn kein /data/ vorn steht, erstmal gucken, ob das Savefile unter
// /data/ existiert. Wenn ja, wird das geladen.
- if (name[0]!='#' && strstr(name,"/"LIBDATADIR"/") != 0)
+ if (strstr(name,"/"LIBDATADIR"/") != 0)
{
string path = "/"LIBDATADIR + name;
if (file_size(path + ".o") >= 0)
@@ -1804,47 +1788,6 @@
}
-#if !__EFUN_DEFINED__(copy_file)
-#define MAXLEN 50000
-nomask int copy_file(string source, string dest)
-{
-
- int ptr;
- string bytes;
-
- set_this_object(previous_object());
- if (!sizeof(source)||!sizeof(dest)||source==dest||(file_size(source)==-1)||
- (!call_other(master(),"valid_read",source,
- getuid(this_interactive()||
- previous_object()),"read_file",previous_object()))||
- (!call_other(master(),"valid_read",source,
- getuid(this_interactive()||
- previous_object()),"write_file",previous_object())))
- return 1;
- switch (file_size(dest))
- {
- case -1:
- break;
- case -2:
- if (dest[<1]!='/') dest+="/";
- dest+=efun::explode(source,"/")[<1];
- if (file_size(dest)==-2) return 1;
- if (file_size(dest)!=-1) break;
- default:
- if (!rm(dest)) return 1;
- break;
- }
- do
- {
- bytes = read_bytes(source, ptr, MAXLEN); ptr += MAXLEN;
- if (!bytes) bytes="";
- write_file(dest, bytes);
- }
- while(sizeof(bytes) == MAXLEN);
- return 0;
-}
-#endif //!__EFUN_DEFINED__(copy_file)
-
// ### Ersatzaufloesung in Strings ###
varargs string replace_personal(string str, mixed *obs, int caps) {