expandSystemRecursive modernisiert

Einmal neu geschrieben zum Verstehen...

Change-Id: Id1dc7b78ff658ef192aa4b9879fb24bb3af51e5e
diff --git a/secure/mailer.c b/secure/mailer.c
index 9901fac..1c0d575 100644
--- a/secure/mailer.c
+++ b/secure/mailer.c
@@ -170,36 +170,34 @@
 
 #define MG_NAMES ({ MUDNAME, "mg", "morgengrauen", "mud", "mg.mud.de" })
 
-string expandSystemRecursive(string addr,int maxrec){
-  string *list,*tlist;
-  string ret,tmp;
-  int i,size;
-  
-  if(maxrec>8 || !addr){
+string expandSystemRecursive(string addr,int maxrec)
+{
+  if(maxrec>8 || !addr)
+  {
     return addr;
   }
-  maxrec++;
+  ++maxrec;
   
-  tlist=({});
-  ret="";
-
-  list=explode(addr,",");
-  list-=({""});
-  size=sizeof(list);
-  for(i=0;i<size;i++){
-    if(tmp=alias[list[i]]){
-      tlist+=explode(tmp,",");
+  string *retlist = ({});
+  int alias_found;
+  foreach(string add : explode(addr,","))
+  {
+    if (add == "")
+      continue;
+    string tmp = alias[add];
+    if (stringp(tmp))
+    {
+      retlist += explode(tmp, ",");
+      ++alias_found;
     }
-    else{
-      tlist+=({list[i]});
-    }
+    else
+      retlist += ({add});
   }
-  tlist-=({""});  
-  ret=implode(tlist,",");
+  string ret = implode(retlist-({""}), ",");
+  // Wenn Aliase aufgeloest wurden: noch einmal versuchen...
+  if (alias_found)
+    ret = expandSystemRecursive(ret, maxrec);
 
-  if((ret!=addr)!=0){
-    ret=expandSystemRecursive(ret,maxrec);
-  }
   return ret;
 }
 
@@ -229,7 +227,7 @@
         else
             ret += ({ addr[i] });
     }
-    
+
     for ( i = sizeof(ret); i--; ){
         if ( ret[i][0] == '\\' )
             ret[i] = ret[i][1..];