Code lesbar gemacht und get_userinfo() ersetzt.

Change-Id: Ie2e1300e59e6491955689f1bcf363f464b60b5a0
diff --git a/std/shells/magier/players.c b/std/shells/magier/players.c
index df8b12d..b81b7bd 100644
--- a/std/shells/magier/players.c
+++ b/std/shells/magier/players.c
@@ -476,9 +476,8 @@
 static int _spieler(string arg)
 {
   string dummy,ip;
-  object *spieler,pl;
-  int i;
-  
+  object pl;
+
   arg=_unparsed_args();
   if(!sizeof(arg) || sscanf(arg,"aus ip %s",dummy)!=1)
     return USAGE("spieler aus ip [von <spieler>|<ip>]");
@@ -486,23 +485,33 @@
   if (sscanf(arg,"von %s",dummy)==1)
   {
     dummy=lower_case(dummy);
-    if (!(pl=find_player(dummy)))
-      return notify_fail(sprintf("Spieler '%s' konnte nicht gefunden "
-                                 "werden.\n",capitalize(dummy))),0;
+    object pl = find_player(dummy);
+    if (!pl) {
+      notify_fail(sprintf("Spieler '%s' konnte nicht gefunden "
+                                 "werden.\n",capitalize(dummy)));
+      return 0;
+    }
     ip=query_ip_number(pl);
   }
-  else ip=arg;
-  ip=implode((explode(ip,".")-({""})+({"*","*","*","*"}))[0..3],".");
-if (catch(
-  spieler=filter(users(),
-    (: return sizeof(regexp(({query_ip_number($1)}),$2)); :),"^"+glob2regexp(ip)+"$")
+  else
+    ip=arg;
 
-                                      ))
-  return printf("In der IP duerfen nur Zahlen(0-255), Punkte (.) und "
-                "Sterne (*) vorkommen.\n"),1;
+  ip=implode((explode(ip,".")-({""})+({"*","*","*","*"}))[0..3],".");
+
+  if (catch(object *spieler=filter(users(),
+            function int (object u, string re) {
+              return sizeof(regexp(({query_ip_number(u)}),re));
+            } )))
+  {
+    printf("In der IP duerfen nur Zahlen(0-255), Punkte (.) und "
+                "Sterne (*) vorkommen.\n");
+    return 1;
+  }
+
   if (!sizeof(spieler))
     return printf("Es konnte kein Spieler mit der IP '%s' gefunden "
                   "werden.\n",ip),1;
+
   arg=sprintf("\nFolgende Spieler haben die IP %s:\n"
        "================================================================"
               "===========\n"
@@ -511,14 +520,21 @@
        "----------------------------------------------------------------"
               "-----------\n",ip);
   i=sizeof(spieler);
-  while(i--)
+  foreach(object u: spieler)
   {
+    string second=spieler[i]->QueryProp(P_SECOND);
+    if (stringp(second) && sizeof(second))
+    {
+      if (!master()->find_userinfo(second))
+        second = "*ungueltig*";
+      else
+        second = capitalize(second);
+    }
+    else
+      second = "";
+
     arg+=sprintf("%-11s %-17s %26s  %-15s\n",
-                 capitalize(getuid(spieler[i])),
-                 ((dummy=(string)spieler[i]->QueryProp(P_SECOND))?
-                  (sizeof((mixed *)call_other(master(),
-                                              "get_userinfo",dummy))?
-                   capitalize(dummy):"*ungueltig*"):""),
+                 capitalize(getuid(u)), second,
                  dtime(spieler[i]->QueryProp(P_LAST_LOGIN)),
                  _spieler_time2string(query_idle(spieler[i])));
   }