Korrektur Spielercheck
Diverse Pruefungen, ob ein Spieler existiert, gefixt.
Dabei direkt auf etwas robusteres umgestellt statt auf
die Existenz des Savefiles zu pruefen.
Change-Id: I13d251e497f166e12403c902c3fcac179c7dd879
diff --git a/secure/bbmaster.c b/secure/bbmaster.c
index 9677f7f..4e5c784 100644
--- a/secure/bbmaster.c
+++ b/secure/bbmaster.c
@@ -338,10 +338,7 @@
// Alles ab hier nur zum Ueberwachen von FTP-Aktivitaeten.
private int player_exists( string user )
{
- if ( !stringp( user ) || sizeof( user ) < 2 )
- return 0;
-
- return file_size( "/save/" + user[0..0] + "/" + user + ".o" ) > 0;
+ return master()->find_userinfo(user);
}
public int add( string user, int timeout )
diff --git a/secure/ftpd.c b/secure/ftpd.c
index 749cf03..3aaa5e6 100644
--- a/secure/ftpd.c
+++ b/secure/ftpd.c
@@ -58,7 +58,7 @@
nomask int player_exists( string user ) {
user = lower_case(user);
if( !stringp( user ) || sizeof( user ) < 1 ) return 0;
- return file_size( "/save/"+user[0..0]+"/"+user+".o" ) > 0;
+ return master()->find_userinfo(user);
}
nomask varargs int add( string user, int timeout ) {
diff --git a/secure/mailer.c b/secure/mailer.c
index 1c0d575..c4f7665 100644
--- a/secure/mailer.c
+++ b/secure/mailer.c
@@ -384,8 +384,8 @@
}
else
- if ( file_size( SAVEPATH + recipients[i][0..0] + "/" +
- recipients[i] + ".o" ) >=0 ){
+ if (master()->find_userinfo(recipients[i]) )
+ {
save_msg( newmsg, recipients[i] );
recok += ({ recipients[i] });
}
@@ -595,15 +595,15 @@
public int query_recipient_ok( string name )
{
#if INTERNET_MAIL_ENABLED
- return (file_size( "secure/save/" + name[0..0] + "/" + name + ".o" ) > 0
- || member( name, '%' ) > 0 || member( name, '@' ) > 0 );
+ return (master()->find_userinfo(name)
+ || member( name, '%' ) > 0 || member( name, '@' ) > 0 );
#else
// es darf zwar ein @ in der Adresse vorkommen, dahinter aber kein . mehr
// (dann ist es ne Mail via Intermud-Mail, nicht ins Internet).
string *tmp;
- return (file_size( "secure/save/" + name[0..0] + "/" + name + ".o" ) > 0
- || member( name, '%' ) > 0
- || (sizeof(tmp=explode(name,"@")) == 2 && strstr(tmp[1],".") == -1));
+ return (master()->find_userinfo(name)
+ || member( name, '%' ) > 0
+ || (sizeof(tmp=explode(name,"@")) == 2 && strstr(tmp[1],".") == -1));
#endif
}
diff --git a/secure/master/misc.c b/secure/master/misc.c
index 40915c7..a831d46 100644
--- a/secure/master/misc.c
+++ b/secure/master/misc.c
@@ -176,7 +176,8 @@
return;
}
- if ( !force && file_size(SAVEPATH+name[0..0]+"/"+name+".o") > 0 ){
+ if ( !force && find_userinfo(name))
+ {
write("Es existiert bereits ein Spieler dieses Namens.\n");
return;
}
@@ -243,7 +244,8 @@
return 0;
}
- if (file_size(SAVEPATH+name[0..0]+"/"+name+".o")<=0){
+ if (!find_userinfo(name))
+ {
write("Es existiert kein Spieler dieses Namens!\n");
return 0;
}
diff --git a/secure/news.c b/secure/news.c
index 751c887..25931b7 100644
--- a/secure/news.c
+++ b/secure/news.c
@@ -131,7 +131,7 @@
if (member(grouplist, name)) return -2; // Gibt es schon
- if (file_size("/"+SAVEPATH+owner[0..0]+"/"+owner+".o")<0) return -3;
+ if (!master()->find_userinfo(owner)) return -3;
savefilea = old_explode(name,".");
savefile = implode(savefilea,"/");
diff --git a/secure/sinmaster.c b/secure/sinmaster.c
index 14b8f94..1559c75 100644
--- a/secure/sinmaster.c
+++ b/secure/sinmaster.c
@@ -108,7 +108,7 @@
if ( text[0..2]=="-f " )
text=text[3..];
- else if ( file_size(sprintf("/save/%s/%s.o",who[0..0],who))<1)
+ else if ( !master()->find_userinfo(who))
return sprintf("Es gibt keinen Spieler namens '%s'\n",who);
text = dtime(time()) + " ("+CAP(getuid(RPL))+")\n"
diff --git a/secure/testmud.c b/secure/testmud.c
index 42c255a..2b0cee7 100644
--- a/secure/testmud.c
+++ b/secure/testmud.c
@@ -33,7 +33,7 @@
{
copy_file("/std/def_workroom.c","/players/jof/workroom.c");
}
- if(file_size("/secure/save/j/jof.o") == FSIZE_NOFILE)
+ if (!master()->find_userinfo("jof"))
{
save_object("/secure/save/j/jof");
}
diff --git a/secure/wahlmaschine.c b/secure/wahlmaschine.c
index 8705f87..899fe1e 100644
--- a/secure/wahlmaschine.c
+++ b/secure/wahlmaschine.c
@@ -125,7 +125,9 @@
return 0;
}
if ((second=RPL->QueryProp(P_SECOND)) &&
- (!stringp(second) || (file_size("/save/"+lower_case(second[0..0])+"/"+lower_case(second)+".o")<=0))) {
+ (!stringp(second)
+ || !master()->find_userinfo(second)))
+ {
notify_fail("Nicht richtig markierte Zweities sind von der Wahl ausgeschlossen.\n");
return 0;
}