Replace get_userinfo() by query_userlist().

Change-Id: I5e4d9f9c0a7d7711013df40e6d50307fcb12ff7e
diff --git a/p/daemon/finger.c b/p/daemon/finger.c
index e4aba4c..a3c7794 100644
--- a/p/daemon/finger.c
+++ b/p/daemon/finger.c
@@ -117,7 +117,6 @@
 
 varargs string finger_single(string str,int local)
 {
-  mixed  *userinfo;
   string ip,text,ipnum,filename,away;
   int wizlevel,playerlevel,idle,pos,flags,last;
   mixed h,data,tmp;
@@ -153,11 +152,10 @@
 
   /* does this player exist? */
   str=old_explode(str,".")[0];
-  userinfo=MASTER->get_userinfo(str);
   player=find_player(str)||find_netdead(str);
 
-  if( (!pointerp(userinfo) || userinfo[USER_LEVEL+1]==-1)
-	&& !player) {
+  if( (!master()->find_userinfo(str) && !player) )
+  {
     text="Hmm... diesen Namen gibt es im "MUDNAME" nicht.\n";
     if (tmp="/secure/master"->QueryBanished(str)){
       text="Hoppla - dieser Name ist reserviert oder gesperrt (\"gebanisht\")!\n";
@@ -273,16 +271,17 @@
        (member(tmp,getuid(this_player()))!=-1))) tmp = 1;
   else tmp=0;
 
-
-  if (!(h=properties[P_RACE]) && userinfo && pointerp(userinfo) && sizeof(userinfo)>4 &&
-      stringp(userinfo[4]) && sizeof(h=old_explode(userinfo[4],"/"))>2) {
-    h=capitalize(h[2]);
-    h=(["Human":"Mensch","Dwarf":"Zwerg","Darkelf":"Dunkelelf","Orc":"Ork"])[h] || h;
+  string shell = master()->query_userlist(str, USER_OBJECT);
+  if (!(h=properties[P_RACE]) && sizeof(shell))
+  {
+    shell = capitalize(explode(shell, "/")[3]);
+    shell =(["Human":"Mensch","Dwarf":"Zwerg","Darkelf":"Dunkelelf",
+             "Orc":"Ork"])[shell] || shell;
   }
 
-  if (!stringp(h)) h="<keine>";
-
-  text+="Rasse: "+h+",  Gilde: "+
+  if (!stringp(shell)) shell="<keine>";
+  int creation = master()->query_userlist(str, USER_CREATION_DATE);
+  text+="Rasse: "+shell+",  Gilde: "+
                      ((h=properties[P_VISIBLE_GUILD])?capitalize(h):((h=properties[P_GUILD])?capitalize(h):"Abenteurer"))+
                      ((h=properties[P_VISIBLE_SUBGUILD_TITLE])?" ("+capitalize(h)+")":((h=properties[P_SUBGUILD_TITLE])?" ("+capitalize(h)+")":""))+
                      ",  Geschlecht: "+({"neutral ?!","maennlich","weiblich","<verdammt seltsam>"})[properties[P_GENDER]]+"\n"+
@@ -292,9 +291,8 @@
                        ("Spielerlevel: "+properties[P_LEVEL]+( wizlevel ? " (Seher"+IN+")" : "" )+
                         (((h=properties[P_GUILD_LEVEL]) && h=h[properties[P_GUILD]]) ?
                          (",   Gildenlevel: "+h) : "" )
-                        ))+((userinfo&&pointerp(userinfo))?
-                        (sprintf("\nDatum des ersten Login: %s",
-                                 (userinfo[5] > 0) ? dtime(userinfo[5]) : "vor dem 10. Nov 1995")):"")+
+                        )) + ((sprintf("\nDatum des ersten Login: %s",
+                                 (creation > 0) ? dtime(creation) : "vor dem 10. Nov 1995")))+
                          (tmp ? ("\nE-Mail-Adresse: "+((h=properties[P_MAILADDR]) ? h : "keine")+"\n") : "\n");
 
   if (properties[P_HOMEPAGE])
@@ -384,21 +382,20 @@
     text+=capitalize(str)+" ist am "+dtime(hc_play)+" in das Nirvana eingegangen.\n";
   }
 
-  if (/*wiz && */userinfo) {
-    data=userinfo[3];
-    if (sizeof(data))
-      text+="Regionsmagier"+IN+" von     : "+implode(map(data,#'capitalize),", ")+".\n";
-    data="/secure/master"->get_domain_homes(str);
-data=filter(data-({"erzmagier"}),#'stringp); 
-    if ((wizlevel>=DOMAINMEMBER_LVL) && (sizeof(data)))
-      text+="Regionsmitarbeiter"+IN+" von: "+implode(map(data,#'capitalize),", ")+".\n";  /* #' */ 
-    }
+  data=master()->query_userlist(str, USER_DOMAIN);
+  if (sizeof(data))
+    text+="Regionsmagier"+IN+" von     : "
+          +implode(map(data,#'capitalize),", ")+".\n";
+  data="/secure/master"->get_domain_homes(str);
+  data=filter(data-({"erzmagier"}),#'stringp);
+  if ((wizlevel>=DOMAINMEMBER_LVL) && (sizeof(data)))
+    text+="Regionsmitarbeiter"+IN+" von: "
+          +implode(map(data,#'capitalize),", ")+".\n";
 
-  if (userinfo) {
-    data=userinfo[8];
+    data=master()->query_userlist(str, USER_GUILD);
     if (sizeof(data))
-      text += "Gildenmagier"+IN+" von      : "+implode(map(data, #'capitalize), ", ")+".\n";   /* #' */
-  }
+      text += "Gildenmagier"+IN+" von      : "
+              +implode(map(data, #'capitalize), ", ")+".\n";
 
   // ggf. Avatar-URI mit ausgeben.
   if (flags & FLAG_AVATAR
diff --git a/secure/master/domain.c b/secure/master/domain.c
index 984133f..ade06ba 100644
--- a/secure/master/domain.c
+++ b/secure/master/domain.c
@@ -8,9 +8,9 @@
 {
   string *domains;
   int i;
-  
+
   if (!find_userinfo(user)||
-      !pointerp(domains=get_userinfo(user)[USER_DOMAIN+1]))
+      !pointerp(domains=query_userlist(user, USER_DOMAIN)))
     return 0;
   return (member(domains,domain) != -1);
 }
@@ -29,7 +29,7 @@
         call_other(SIMUL_EFUN_FILE, "secure_level") < GOD_LVL) ||
         !find_userinfo(user))
     return 0;
-  domains=get_userinfo(user)[USER_DOMAIN+1];
+  domains=query_userlist(user, USER_DOMAIN);
   if (!domains) 
     set_domains(user,({dom}));
   else
@@ -51,7 +51,7 @@
 
   if (!IS_GOD(geteuid(previous_object()))
       ||!find_userinfo(user)
-      ||!(domains=get_userinfo(user)[USER_DOMAIN+1])
+      ||!(domains=query_userlist(user, USER_DOMAIN))
       || member(domains,dom)==-1)
     return 0;
   domains-=({dom});
diff --git a/secure/master/guild.c b/secure/master/guild.c
index 9f4e839..d0c025c 100644
--- a/secure/master/guild.c
+++ b/secure/master/guild.c
@@ -16,7 +16,7 @@
   int i;
 
   if (!find_userinfo(user)||
-      !pointerp(guilds=get_userinfo(user)[USER_GUILD-1]))
+      !pointerp(guilds=query_userlist(user, USER_GUILD)))
     return 0;
   
   return (member(guilds,guild) != -1);
@@ -31,7 +31,7 @@
       !find_userinfo(user))
     return 0;
 
-  guilds=get_userinfo(user)[USER_GUILD-1];
+  guilds=query_userlist(user, USER_GUILD);
   if (!guilds)
     set_guilds(user, ({ guild }) );
   else {
@@ -47,7 +47,7 @@
 
   if (!IS_GOD(geteuid(previous_object()))
       ||!find_userinfo(user)
-      ||!(guilds=get_userinfo(user)[USER_GUILD-1])
+      ||!(guilds=query_userlist(user, USER_GUILD))
       || member(guilds,guild)==-1)
     return 0;
   guilds -= ({ guild });
diff --git a/secure/simul_efun/livings.c b/secure/simul_efun/livings.c
index 4ed04b4..2d0ffde 100644
--- a/secure/simul_efun/livings.c
+++ b/secure/simul_efun/livings.c
@@ -1,5 +1,7 @@
 // * living_name-Behandlung
 
+#include "/sys/userinfo.h"
+
 #define clean_log(s)
 //#define clean_log(s) log_file("CLEAN_SIM",ctime(time())[4..18]+": "+(s));
 
@@ -23,21 +25,19 @@
 
 public varargs string getuuid( object ob )
 {
-    mixed *ret;
+  if ( !objectp(ob) )
+     ob = previous_object();
 
-    if ( !objectp(ob) )
-       ob = previous_object();
+  if ( !query_once_interactive(ob) )
+     return getuid(ob);
 
-    if ( !query_once_interactive(ob) )
-       return getuid(ob);
+  int creation = master()->query_userlist(getuid(ob), USER_CREATION_DATE);
 
-    ret = master()->get_userinfo( getuid(ob) );
+  if (!intp(creation))
+     return getuid(ob);
 
-    if ( !pointerp(ret) || sizeof(ret) < 5 )
-       return getuid(ob);
-
-    // Username + "_" + CreationDate
-    return ret[0] + "_" + ret[5];
+  // Username + "_" + CreationDate
+  return getuid(ob) + "_" + creation;
 }
 
 void set_object_living_name(string livname, object obj)
diff --git a/secure/simul_efun/spare/livings.c b/secure/simul_efun/spare/livings.c
index 4ed04b4..2d0ffde 100644
--- a/secure/simul_efun/spare/livings.c
+++ b/secure/simul_efun/spare/livings.c
@@ -1,5 +1,7 @@
 // * living_name-Behandlung
 
+#include "/sys/userinfo.h"
+
 #define clean_log(s)
 //#define clean_log(s) log_file("CLEAN_SIM",ctime(time())[4..18]+": "+(s));
 
@@ -23,21 +25,19 @@
 
 public varargs string getuuid( object ob )
 {
-    mixed *ret;
+  if ( !objectp(ob) )
+     ob = previous_object();
 
-    if ( !objectp(ob) )
-       ob = previous_object();
+  if ( !query_once_interactive(ob) )
+     return getuid(ob);
 
-    if ( !query_once_interactive(ob) )
-       return getuid(ob);
+  int creation = master()->query_userlist(getuid(ob), USER_CREATION_DATE);
 
-    ret = master()->get_userinfo( getuid(ob) );
+  if (!intp(creation))
+     return getuid(ob);
 
-    if ( !pointerp(ret) || sizeof(ret) < 5 )
-       return getuid(ob);
-
-    // Username + "_" + CreationDate
-    return ret[0] + "_" + ret[5];
+  // Username + "_" + CreationDate
+  return getuid(ob) + "_" + creation;
 }
 
 void set_object_living_name(string livname, object obj)
diff --git a/secure/zweities.c b/secure/zweities.c
index fdb3641..da155ed 100644
--- a/secure/zweities.c
+++ b/secure/zweities.c
@@ -69,8 +69,7 @@
       && strstr(testie,"Gilde")==-1)
   {
     testie=lower_case(testie);
-    mixed plinfo = master()->get_userinfo(testie);
-    if (pointerp(plinfo))
+    if (master()->find_userinfo(testie))
     {
       sl_exec("INSERT OR REPLACE INTO testies(name, magier, lastlogin) "
               "VALUES(?1,?2,?3);",
@@ -84,14 +83,14 @@
   if (stringp(erstie))
   {
     erstie=lower_case(erstie);
-    mixed plinfo = master()->get_userinfo(erstie);
-    if (pointerp(plinfo))
+    if (master()->find_userinfo(erstie))
     {
       sl_exec("INSERT OR REPLACE INTO zweities(uuid, name, erstieuuid, erstie) "
               "VALUES(?1,?2,?3,?4);",
               getuuid(trigob),
               trigob->query_real_name(),
-              erstie + "_" + plinfo[USER_CREATION_DATE+1],
+              erstie + "_"
+                     + master()->query_userlist(erstie,USER_CREATION_DATE),
               erstie);
     }
     //ZDEBUG(sprintf("%O, %O, %O\n",eid,trigob,data));