mailer.c-Dateireferenz

#include "post.h"
#include <properties.h>
#include <language.h>
#include <config.h>
#include <mail.h>
#include <wizlevels.h>
#include <moving.h>
#include <defines.h>
Include-Abhängigkeitsdiagramm für mailer.c:
Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define TRUSTED(o)   (objectp(o) && BLUE_NAME(o)=="/obj/mpa")
#define MAILFILE(name)   ("/"+MAILPATH+name[0..0]+"/"+name)
#define MAILFILEO(name)   (MAILFILE(name)+".o")
#define MAILDEMON0297
#define IS_NUMBER(n)   (stringp(n) && strlen(n) && n[0]>='0' && n[0]<='9')
#define DEBUGVAR(x)

Funktionen

static varargs void SendMail (string text, int flag)
static void input ()
static mixed process_names (mixed s)
static void get_carbon_copy (string str)
static varargs string * send_mail (mixed back)
string * unify_array (string *a)
static mapping Read_mailrc (string file)
static varargs void update (int directflag, int nocondflag)
static varargs void ListContent ()
string GetFolderName (mixed fol)
static void LagWarning ()
string GetReTitle (string s)
static string Message2string (int nr)
int * GetNumbers (mixed s)
void create ()
void init ()
void reset ()
mixed postneustart ()
string SetOfficeName (string n)
static varargs void write_mail (mixed str, string std_subject, string text)
static varargs void get_subject (string str, string pretext)
varargs void do_mail (mixed str, string titel, string text)
static void MediumHelpPage ()
static varargs int GetFolders (int nocondflag)
static void ChangeFolder (mixed x)
static void ListFolders ()
static void MakeFolder (string s)
static int RemoveFolder (string x)
static varargs int DeleteMessage (int *nrs)
static int MoveMessage (mixed msg, mixed fol)
static varargs int Reply (int nr, int group)
static varargs int Forward (mixed to, mixed nr, int appendflag)
static int ForwardArea (mixed to, int *nrs)
static int ReadMessage (int nr)
static varargs int SaveMessage (int *nrs)
static void ListAliases ()
static void mail_cmds (string str)
static void prompt ()
static mixed GetAlias (mixed a)
static mixed RecurseProcessNames (mixed a)
int query_prevent_shadow ()

Variablen

inherit std thing
inherit NEDIT
static string subject
static string message
static string receiver
static string sender
static string * carbon
static string * blindcarbon
static string name
static string office_name
static int done
static int akt_folder
static int i
static int akt_nr
static int directflag
static int folder_size
static int folder_date
static mapping aliases
mixed * folders

Makro-Dokumentation

#define DEBUGVAR ( x   ) 

Definiert in Zeile 94 der Datei mailer.c.

Wird benutzt von get_carbon_copy(), get_subject(), GetNumbers(), ListContent(), mail_cmds(), Reply(), send_mail() und update().

#define IS_NUMBER (  )     (stringp(n) && strlen(n) && n[0]>='0' && n[0]<='9')

Definiert in Zeile 89 der Datei mailer.c.

Wird benutzt von GetFolderName() und mail_cmds().

#define MAILDEMON0297

Definiert in Zeile 87 der Datei mailer.c.

#define MAILFILE ( name   )     ("/"+MAILPATH+name[0..0]+"/"+name)

Definiert in Zeile 85 der Datei mailer.c.

Wird benutzt von GetFolders().

#define MAILFILEO ( name   )     (MAILFILE(name)+".o")

Definiert in Zeile 86 der Datei mailer.c.

Wird benutzt von do_mail(), GetFolders() und ListFolders().

#define TRUSTED (  )     (objectp(o) && BLUE_NAME(o)=="/obj/mpa")

Definiert in Zeile 81 der Datei mailer.c.

Wird benutzt von do_mail().


Dokumentation der Funktionen

static void ChangeFolder ( mixed  x  )  [static]

Definiert in Zeile 685 der Datei mailer.c.

Benutzt akt_folder, akt_nr, folders, GetFolderName() und ListContent().

Wird benutzt von mail_cmds().

00685                                   {  
00686   if (!(x=GetFolderName(x))) return;
00687   akt_folder=member(folders[0],x);
00688   write("Du oeffnest den Ordner '"+x+"'.\n");
00689   if (akt_nr<=0) akt_nr=1;
00690   if (akt_nr>=sizeof(folders[1][akt_folder])) 
00691     akt_nr=sizeof(folders[1][akt_folder]);
00692   ListContent();
00693 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void create (  ) 

Definiert in Zeile 127 der Datei mailer.c.

Benutzt akt_folder, create(), folder_date, folder_size, office_name, P_IDS, P_NAME, P_NODROP, P_SHORT, P_WEIGHT und SetProp().

00127               {
00128   (::create());
00129   seteuid(getuid());
00130   SetProp(P_IDS,({"mailer"}));
00131   SetProp(P_NAME,"mailer");
00132   office_name="Morgengrauens Post";
00133   akt_folder=-1;
00134   folder_size=folder_date=-42;
00135   SetProp(P_NODROP,1);
00136   SetProp(P_SHORT,0);
00137   SetProp(P_WEIGHT,0);
00138 } 

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static varargs int DeleteMessage ( int *  nrs  )  [static]

Definiert in Zeile 741 der Datei mailer.c.

Benutzt akt_folder, LagWarning(), MAILDEMON, name, update() und x.

Wird benutzt von mail_cmds().

00741                                            {
00742   int ret,x;
00743   mixed m;
00744   if ( sizeof(nrs) > 15 ) LagWarning();
00745 
00746   for (x=sizeof(nrs)-1;x>=0;x--) {
00747     write("Loesche Brief "+(nrs[x]+1)+": ");
00748     ret=MAILDEMON->RemoveMsg(nrs[x], akt_folder, name);
00749     switch(ret) {
00750     case 1: write("Ok.\n"); break;
00751     case 0: write("Kein solcher Brief im aktuellen Ordner.\n"); break;
00752     case -1:write("Kein aktueller Ordner.\n"); update(); return ret;
00753     default: write("MAILDEMON: Interner Fehler Nummer "+ret+"!\n"); break;
00754     }
00755   }
00756   
00757   return ret;
00758 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

varargs void do_mail ( mixed  str,
string  titel,
string  text 
)

Definiert in Zeile 396 der Datei mailer.c.

Benutzt aliases, ALIASFILE, break_string(), directflag, DOMAINMEMBER_LVL, folders, FWSERV, i, input, IS_ARCH, ListContent(), M_NOCHECK, MAILFILEO, move(), name, query_wiz_level(), Read_mailrc(), SYSALIAS, TRUSTED, update() und write_mail().

00396                                                          {
00397   // text und titel angegeben: versende Text, keine weiteren Taetigkeiten.
00398 
00399   mixed i;
00400   int silent;
00401   
00402   if (name) return; /* security flag :-) */
00403   if (!this_interactive()) return;
00404   if (!text) {
00405     name=geteuid(this_interactive());
00406     move(this_interactive(),M_NOCHECK);
00407     if (!name) remove();
00408   }
00409   aliases=Read_mailrc(ALIASFILE(geteuid(this_interactive())))+
00410                   Read_mailrc(SYSALIAS);
00411 //  akt_folder=member_array("newmail",folders[0]);
00412 //  if (akt_folder==-1) akt_folder=0;
00413   if (str) {
00414     str=lower_case(str);
00415     
00416     if(regreplace(regreplace(str," ","",1),"\t","",1)=="-silent")
00417     {
00418       silent=1;
00419     }
00420     else
00421     {
00422       directflag=1;
00423       if (text) {
00424         if (this_interactive()!=this_player()) return 0;
00425         if (!TRUSTED(previous_object())) return
00426                   write(break_string("WARNUNG!!! Objekt "+object_name(previous_object())+
00427                                                    " versucht, Mail mit Deinem Absender zu versenden! "
00428                              "Bitte Erzmagier oder Loco verstaendigen.",78)+
00429                              "\n");
00430         directflag=2;
00431         return write_mail(str,titel,text);
00432       }
00433       directflag=1;
00434       return write_mail(str);
00435     }
00436   }
00437   
00438   update(0,1);
00439   if (!pointerp(folders) || sizeof(folders)!=2 || sizeof(folders[0])==0) {
00440     write("Du hast im Moment keine Post !\n");
00441     folders=({({}),({})});
00442   }
00443   write("Du hast "+sizeof(folders[0])+" Ordner, Liste mit 'i'.\n");
00444 
00445   if(!silent)
00446   {
00447     ListContent();
00448   }
00449   
00450   write("Gesamtgroesse Deines Postfachs: "+
00451                 (i=(file_size(MAILFILEO(name))+512)/1024)+" KB.\n");
00452   // Kleiner Hack als Uebergangsloesung, weil ich die dumme Warnung
00453   // nicht mehr sehen kann. ;^)
00454   // 22.10.2000, Tiamak
00455   if(IS_ARCH(this_interactive())) i=0;
00456 
00457   //
00458   // Kleiner Hack, damit Regionsmitarbeiter und groessere Magier
00459   // bei ihren Gebietswartungen nicht staendig mit nervigen
00460   // Meldungen belaestigt werden:
00461   //
00462   // 2005-01-10, Zook
00463   if (query_wiz_level(this_interactive()) > DOMAINMEMBER_LVL) {
00464     if (i>700) 
00465       write("*************************************************************\n"
00466             "* Dein Postfach ist zu gross! Bitte versuche aufzuraeumen   *\n"
00467                     "* und damit die Groesse zu reduzieren. Grosse Postfaecher   *\n"
00468                     "* verursachen unnoetiges Lag fuer die Spieler.              *\n"
00469                     "*************************************************************\n");
00470     i=0;
00471   }
00472 
00473   if (i>500) // Extra-Warnung fuer Catweazle
00474              // man koennte natuerlich auch eine Channel-Meldung ausspucken
00475              // mit dem Hinweis, wer das aktuelle Lag verursacht... vielleicht
00476              // ab 800 KB? ;-)
00477     write("*****************************************************************\n"
00478                   "* Dein Postfach hat eine absolut unakzeptable Groesse erreicht. *\n"
00479                   "* Uebergrosse Postfaecher verursachen unnoetiges Lag fuer alle! *\n"
00480                   "* Bitte raeume es dringend auf, d.h. loesche alle Briefe, die   *\n"
00481                   "* Du nicht _unbedingt_ benoetigst, oder lager sie aus und       *\n"
00482                   "* loesche sie anschliessend. Hauptsache, weg damit.             *\n"
00483                   "*****************************************************************\n");
00484   else if (i>300) // Warnung fuer bestimmte Magier und Seher ab 300 KB
00485     write("WARNUNG! Dein Postfach hat eine bedenkliche Groesse erreicht.\n"
00486                   "Beachte, dass uebergrosse Postfaecher nicht nur unnoetig Speicher, sondern\n"
00487                   "insbesondere auch Rechenzeit verbrauchen und damit groesseres Lag verursachen\n"
00488                   "koennen. Du solltest also dringend aufraeumen und alle nicht unbedingt\n"
00489                   "notwendigen Briefe loeschen (evtl. natuerlich vorher auslagern.\n");
00490   else if (i>200) // Hinweis fuer andere.
00491     write("Der Postbeamte macht dich darauf aufmerksam, dass Dein Postfach bereits\n"
00492                   "ziemlich voll ist und Du dringend einmal aufraeumen solltest.\n");
00493   else if (i>100) // Hinweis fuer andere.
00494     write("Der Postbeamte macht dich darauf aufmerksam, dass Dein Postfach\n"
00495                   "relativ voll ist.\n");
00496   
00497 
00498   if ((i=FWSERV->QueryForward(name))!=name)
00499     write("Du hast einen Nachsendeauftrag gestellt, Deine Post wird an\n"
00500                   +i+" weitergeleitet.\n");
00501   return input();
00502 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static varargs int Forward ( mixed  to,
mixed  nr,
int  appendflag 
) [static]

Definiert in Zeile 822 der Datei mailer.c.

Benutzt akt_folder, carbon, folders, get_carbon_copy(), get_subject(), message, msg(), MSG_BODY, MSG_FROM, MSG_SUBJECT, process_names(), receiver und subject.

Wird benutzt von ForwardArea() und mail_cmds().

00822                                                              {
00823   mixed msg;
00824   if (!pointerp(folders)||!pointerp(folders[0])||
00825       sizeof(folders[0])<=akt_folder) {
00826     write("Seltsamer Fehler: Kein aktueller Ordner!\n");
00827     return 0;
00828   }
00829   if (nr<0 || !pointerp(folders[1][akt_folder]) ||
00830       sizeof(folders[1][akt_folder])<=nr){
00831     write("Nicht so viele Briefe in diesem Ordner!\n");
00832     return 0;
00833   }
00834   to=process_names(to);
00835   receiver=to[0];
00836   carbon=to[1..];
00837   subject="Fw: "+folders[1][akt_folder][nr][MSG_SUBJECT];
00838   message="Weitergesendeter Brief, urspruenglich von: "+
00839        folders[1][akt_folder][nr][MSG_FROM]+"\n\
00840 -----------------------------\n\
00841 "+folders[1][akt_folder][nr][MSG_BODY]+"\
00842 -----------------------------\n";
00843   if (!appendflag) return get_carbon_copy(0),1;
00844   else {
00845     write("Text kann angehaengt werden\n");
00846     get_subject(subject,message);
00847   }
00848   return 1;
00849 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static int ForwardArea ( mixed  to,
int *  nrs 
) [static]

Definiert in Zeile 853 der Datei mailer.c.

Benutzt carbon, dtime(), Forward(), get_carbon_copy(), LagWarning(), message, Message2string(), msg(), process_names(), receiver und subject.

Wird benutzt von mail_cmds().

00853                                            {
00854   mixed msg;
00855 
00856   if (!sizeof(nrs)) return 0;
00857   if (sizeof(nrs)==1) return Forward(to,nrs[0]);
00858   if (sizeof(nrs)>15) LagWarning();
00859 
00860   to=process_names(to);
00861   receiver=to[0];
00862   carbon=to[1..];
00863   subject="Fw: Gesammelte Briefe ("+dtime(time())[5..23]+")";
00864   message="";
00865   for (i=0;i<sizeof(nrs);i++) {
00866     write("Brief "+(nrs[i]+1)+": ");
00867     message+=Message2string(nrs[i])+
00868     "----------------------------------------------------------------------\n";
00869     write("Angehaengt.\n");
00870   }
00871 /*
00872   if (!appendflag) {
00873 */
00874     return get_carbon_copy(0),1;
00875 /*  }
00876   else {
00877     write("Text kann angehaengt werden\n");
00878     get_subject(subject,message);
00879   }
00880   return 1;
00881 */
00882 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static void get_carbon_copy ( string  str  )  [static]

Definiert in Zeile 253 der Datei mailer.c.

Benutzt blindcarbon, carbon, DEBUGVAR, directflag, find_player(), FWSERV, h, i, input, message, old_explode(), p, process_names(), receiver, send_mail(), SendMail(), subject, unify_array() und x.

Wird benutzt von Forward(), ForwardArea() und SendMail().

00253                                         {       // Aufruf mit 0, wenn keine cc gewuenscht.
00254   int i,j;
00255   object p;
00256   string *oldcarbons,*h,*receivers;
00257   mapping orignames;
00258   
00259   oldcarbons=carbon;
00260   if (str=="~q") return SendMail(0); // Abbruch, entspricht Abbruch im Editor
00261   if (!str || str=="") carbon=0;
00262   else carbon=process_names(str);
00263   carbon=(oldcarbons ? oldcarbons : ({}))+(carbon ? carbon : ({}));
00264 
00265 #ifdef MAIL_SUPPORT_BCC
00266   blindcarbon=filter(carbon,
00267       function status (string x)
00268         {if (x[0]=='-') return(1);
00269                  return(0);});
00270   carbon-=blindcarbon;
00271   blindcarbon=map(blindcarbon,
00272       function string (string x) 
00273         {return(x[1..]);} );
00274 #endif
00275 
00276 #ifdef MAIL_SUPPORT_BCC
00277   oldcarbons=({receiver})+carbon+blindcarbon; // speichere alle Originaladressen
00278 #else
00279   oldcarbons=({receiver})+carbon;
00280 #endif
00281 
00282   /* Forwards auswerten, dabei werden auch ungueltige Adressen gefiltert */
00283   /* orignames speichert die Zuordnung Zieladressen -> Originaladressen  */
00284 
00285   orignames=([]);
00286   h=explode(FWSERV->QueryForward(receiver),",");
00287 
00288   DEBUGVAR(h);
00289   for (j=sizeof(h);j--;)
00290     orignames[(h[j][0]=='\\'?h[j][1..]:h[j])]=({receiver[0]=='\\'?receiver[1..]:receiver});
00291   receiver=h[0];
00292   receivers=h[1..]; // Missbrauch dieser Variable!
00293 
00294   DEBUGVAR(orignames);
00295 
00296   for (i=sizeof(carbon);i--;) {
00297     h=explode(FWSERV->QueryForward(carbon[i])||"",",");
00298     for (j=sizeof(h);j--;) {
00299       h[j]=(h[j][0]=='\\'?h[j][1..]:h[j]);
00300       orignames[h[j]]=(orignames[h[j]]||({}))+({carbon[i][0]=='\\'?carbon[i][1..]:carbon[i]});
00301       receivers+=h;
00302     }
00303   }
00304   carbon=receivers;
00305 
00306 #ifdef MAIL_SUPPORT_BCC
00307   receivers=({});
00308   for (i=sizeof(blindcarbon)-1;i>=0;i--) {
00309     h=old_explode(FWSERV->QueryForward(blindcarbon[i]),",");
00310     for (j=sizeof(h)-1;j>=0;j--) {
00311       h[j]=(h[j][0]=='\\'?h[j][1..]:h[j]);
00312       orignames[h[j]]=(orignames[h[j]]||({}))+({blindcarbon[i][0]=='\\'?blindcarbon[i][1..]:blindcarbon[i]});
00313       receivers+=h;
00314     }
00315   }
00316   blindcarbon=receivers;
00317 #endif
00318 
00319   carbon=send_mail();
00320   receivers=({});
00321 
00322   if (!pointerp(carbon) || !sizeof(carbon)){
00323     write("Brief NICHT verschickt, da keine Empfaenger gefunden!\n");
00324   } else { 
00325     string *a; 
00326     DEBUGVAR(orignames);
00327     for (i=0;i<sizeof(carbon);i++){
00328       DEBUGVAR(carbon[i]);
00329       /* evtl. abfragen nach query_editing und/oder query_input_to */
00330       /* Benachrichtige Spieler, die ein forward gesetzt haben */
00331       a=orignames[carbon[i]];
00332       if (pointerp(a))
00333       {
00334         a=a-({carbon[i]});
00335         for (j=sizeof(a);j--;) 
00336           if (p=find_player(a[j])) 
00337                     tell_object(p,"Ein Postreiter ruft Dir aus einiger Entfernung zu, dass Du neue Post hast!\nDer Brief wurde wunschgemaess weitergeleitet.\n");
00338       }
00339       /* Benachrichtige Empfaenger */
00340 #ifndef MAILDEMON0297
00341       if (p=find_player(carbon[i])) 
00342         tell_object(p,"Ein Postreiter ruft Dir aus einiger Entfernung zu, dass Du neue Post hast!\n");
00343 #endif
00344       receivers+=orignames[carbon[i]]||orignames["\\"+carbon[i]]||({});
00345     }
00346     DEBUGVAR(carbon);
00347     write("Abgesandt an: "+implode(unify_array(map(receivers,#'capitalize)),", ")+"\n");//')));
00348   }
00349   for (i=sizeof(oldcarbons);i--;)
00350     if (oldcarbons[i][0]=='\\')
00351       oldcarbons[i]=oldcarbons[i][1..];
00352   oldcarbons=oldcarbons-receivers;
00353   if (sizeof(oldcarbons)) {
00354     write("Empfaenger unbekannt: "+implode(map(oldcarbons,#'capitalize),", ")+"\nIrgendjemand wirft Dir den zurueckgekommenen Brief zu.\n");//')))
00355     send_mail(oldcarbons);
00356   }
00357 
00358   message=receiver=carbon=subject=0;
00359   if (directflag) {
00360     if (directflag==1) remove(); // 1: Direktmodus, 2: non-interactive
00361     return;
00362   }
00363   return input();
00364 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs void get_subject ( string  str,
string  pretext 
) [static]

Definiert in Zeile 219 der Datei mailer.c.

Benutzt DEBUGVAR, input_to(), nedit(), SendMail() und subject.

Wird benutzt von Forward().

00219                                                            {
00220   DEBUGVAR(str);
00221   DEBUGVAR(subject);
00222   if ((!str||str=="") && !subject) {
00223     write("Titel (Abbrechen mit ~q): ");
00224     return input_to("get_subject");
00225   }
00226   if (str=="~q"||str=="~Q") return SendMail(0); // entspricht Abbruch im Editor.
00227   if (str && str!="") subject=str;
00228   write("Bitte gib jetzt Deine Nachricht an:\n\
00229 ** oder . wenn fertig, ~q fuer Abbruch, ~h fuer eine Hilfsseite\n");
00230   nedit("SendMail",pretext);
00231 //  return 1;
00232 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static mixed GetAlias ( mixed  a  )  [static]

Definiert in Zeile 1256 der Datei mailer.c.

Benutzt aliases und process_names().

01256 { return process_names(aliases[a]); }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

string GetFolderName ( mixed  fol  ) 

Definiert in Zeile 1344 der Datei mailer.c.

Benutzt akt_folder, folders und IS_NUMBER.

Wird benutzt von ChangeFolder() und mail_cmds().

01344                                 {  // int oder string. alles andere -> Fehler!
01345   mixed h;
01346 
01347   if (fol=="+") fol=akt_folder+1;
01348   if (fol=="-") fol=akt_folder-1;
01349   if ((!fol)||(intp(fol))||(IS_NUMBER(fol))) {
01350     if (!intp(fol)) fol=to_int(fol)-1;
01351     if (fol<0||fol>=sizeof(folders[0])) 
01352       return write("Einen Ordner mit Nummer "+(fol+1)+" gibt es nicht.\n"),0;
01353     return folders[0][fol];
01354   }
01355   fol=lower_case(fol);
01356   if (sizeof(h=regexp(folders[0],"^"+fol))==1) return h[0];
01357   if (member(folders[0],fol)==-1)
01358     return write("Einen Ordner mit Namen "+fol+" hast Du nicht.\n"),0;
01359   return fol;
01360 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs int GetFolders ( int  nocondflag  )  [static]

Definiert in Zeile 538 der Datei mailer.c.

Benutzt file_time(), folder_date, folder_size, folders, MAILFILE, MAILFILEO, name und restore_object().

Wird benutzt von update().

00538                                               {
00539 // nocondflag: no condition, unbedingt neuladen
00540 
00541 // Cache-Verwaltung endlich funktionsfaehig [251196]
00542 // IDEE: Uhrzeit & Groesse untersuchen, ausserdem nach Verschieben neuladen.
00543 //       Auch nach automatischem Verschieben (unread -> newmail)!
00544 
00545 
00546 //  write("DEBUG: GetFolders called, old date "+folder_date+", old size "+folder_size+", nocondflag="+nocondflag+"\n");
00547   if (!nocondflag && 
00548       file_time(MAILFILEO(name))==folder_date &&
00549       file_size(MAILFILEO(name))==folder_size) return 0;
00550 
00551   if (!restore_object(MAILFILE(name))) folders=({({}),({})});
00552   folder_date=file_time(MAILFILEO(name));
00553   folder_size=file_size(MAILFILEO(name));
00554   if (!pointerp(folders) || sizeof(folders)!=2) folders=({({}),({})});
00555 //  write("DEBUG: GetFolders finished, new date "+folder_date+", new size "+folder_size+"\n");
00556   return 1;
00557 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

int * GetNumbers ( mixed  s  ) 

Definiert in Zeile 1302 der Datei mailer.c.

Benutzt akt_folder, DEBUGVAR und folders.

Wird benutzt von mail_cmds().

01302                           {
01303   int i,h1,h2;
01304   mixed ret;
01305   
01306   if (intp(s)) return ({s-1});
01307   if (stringp(s)) s=({s-1});
01308   if (!pointerp(s)) return 0;
01309 
01310   ret=({});
01311 
01312   for (i=sizeof(s)-1;i>=0;i--) {
01313     if (sscanf(s[i],"%d-%d",h1,h2)==2) {
01314       if (h2-h1>100) {
01315                 write("Nicht so viele auf einmal, bitte.\n");
01316                 return ({});
01317       }
01318       for (h1--;h1<h2;h1++) ret=ret-({h1})+({h1});
01319     }
01320     else
01321       ret=ret-({h1=to_int(s[i])-1})+({h1});
01322   }
01323   ret=sort_array(ret,#'>); //')
01324   DEBUGVAR(ret);
01325   if (ret[0]<0) {
01326     write("Illegale Nummer: "+(ret[0]+1)+", nichts unter 1 bitte!\n");
01327     return ({});
01328   }
01329   if (ret[<1]>=sizeof(folders[1][akt_folder])) {
01330     write("Illegale Nummer: "+(ret[<1]+1)+", so gross ist dieser Ordner nicht!\n");
01331     return ({});
01332   }
01333   return ret;
01334 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

string GetReTitle ( string  s  ) 

Definiert in Zeile 1291 der Datei mailer.c.

Wird benutzt von Reply().

01291                             {
01292   int nr,s2;
01293 
01294   if (!s) s="";
01295   if (s[0..7]=="Re: Re: ") return "Re^3: "+s[8..];
01296   else if (sscanf(s,"Re^%d: %s",nr,s2))
01297     return "Re^"+(nr+1)+": "+s2;
01298   else return "Re: "+s;
01299 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void init (  ) 

Definiert in Zeile 141 der Datei mailer.c.

Benutzt init() und init_rescue().

00141             {
00142   (::init());
00143   init_rescue();
00144   add_action("postneustart","post");
00145   add_action("postneustart","mail");
00146 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static void input (  )  [static]

Definiert in Zeile 1188 der Datei mailer.c.

Benutzt input_to() und prompt().

01188                     {
01189   prompt();
01190   input_to("mail_cmds");
01191   return;
01192 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static void LagWarning (  )  [static]

Definiert in Zeile 932 der Datei mailer.c.

Wird benutzt von DeleteMessage(), ForwardArea() und SaveMessage().

00932                          {
00933   write("\
00934 WARNUNG!!! Diese Aktion kann sehr lange benoetigen. Bitte sparsam verwenden,\n\
00935   um das Lag fuer alle ertraeglich zu halten. Falls die Aktion mit einem\n\
00936   Fehler abbricht, waren es wahrscheinlich zu viele Briefe auf einmal.\n\
00937   Dann kannst Du mit \"mail\" wieder in das Mailmenu einsteigen und solltest\n\
00938   es mit weniger Briefen versuchen.\n");
00939 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static void ListAliases (  )  [static]

Definiert in Zeile 977 der Datei mailer.c.

Benutzt aliases und P_MAILADDR.

Wird benutzt von mail_cmds().

00977                           {
00978   mixed a;
00979   int i;
00980   string s;
00981   a=sort_array(m_indices(aliases),#'>); // ');
00982   s=( "Definierte Aliase:\n"
00983       "d.xyz        = Alle Mitarbeiter der Domain xyz\n"
00984       "freunde      = Deine Freunde (entsprechend Freundschaftsband)\n"
00985       "me           = "+(this_player()->QueryProp(P_MAILADDR))+"\n");
00986   for (i=0;i<sizeof(a);i++) 
00987     if (strstr(aliases[a[i]],"@")==-1) s+=sprintf("%-12s = %s\n",a[i],aliases[a[i]]);
00988   write(s);
00989 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs void ListContent (  )  [static]

Definiert in Zeile 656 der Datei mailer.c.

Benutzt akt_folder, akt_nr, DEBUGVAR, folders, MSG_DATE, MSG_FROM, MSG_SUBJECT und update().

Wird benutzt von ChangeFolder(), do_mail() und mail_cmds().

00656                                   {
00657   int i;
00658   update();
00659 //  DEBUGVAR(folders[0]);
00660 //  DEBUGVAR(folders[1]);
00661   DEBUGVAR(akt_folder);
00662   if (!pointerp(folders)||sizeof(folders)!=2||
00663       !pointerp(folders[0])||!sizeof(folders[0])) {
00664     write("Du hast keinen einzigen Ordner!\n");
00665     return;
00666   }
00667   write("Ordner "+folders[0][akt_folder]+": ");
00668   if (!pointerp(folders[1]) || akt_folder>=sizeof(folders[1]) || 
00669       !pointerp(folders[1][akt_folder])) {
00670     write("Dieser Ordner ist leer.\n");
00671     return;
00672   }
00673   write(sizeof(folders[1][akt_folder])+" Brief"+
00674                 ((sizeof(folders[1][akt_folder])!=1)?"e\n":"\n"));
00675   for (i=0;i<sizeof(folders[1][akt_folder]);i++){
00676     write(((i+1==akt_nr) ? "->" : "  ")+
00677                   sprintf("%3d: (%12s, %s) ",i+1,capitalize(folders[1][akt_folder][i][MSG_FROM]),
00678                                   folders[1][akt_folder][i][MSG_DATE][5..11])+
00679                   folders[1][akt_folder][i][MSG_SUBJECT]+"\n");
00680   }
00681   return;
00682 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static void ListFolders (  )  [static]

Definiert in Zeile 696 der Datei mailer.c.

Benutzt akt_folder, folders, MAILFILEO, name und update().

Wird benutzt von mail_cmds().

00696                           {
00697   int i;
00698   update();
00699   write("Du hast "+sizeof(folders[0])+" Ordner:\n");
00700   for (i=0;i<sizeof(folders[0]);i++)
00701     write(sprintf("%2s%3d: %-20s(%3d Briefe)\n",
00702                                   ((i==akt_folder)?"->":"  "),
00703                                   i+1,folders[0][i],sizeof(folders[1][i])));
00704   write("Gesamtgroesse Deines Postfachs: "+
00705                 ((file_size(MAILFILEO(name))+512)/1024)+" KB.\n");
00706 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static void mail_cmds ( string  str  )  [static]

Definiert in Zeile 996 der Datei mailer.c.

Benutzt akt_folder, akt_nr, ChangeFolder(), DEBUGVAR, DeleteMessage(), folders, Forward(), ForwardArea(), GetFolderName(), GetNumbers(), input, IS_NUMBER, ListAliases(), ListContent(), ListFolders(), MakeFolder(), MediumHelpPage(), MoveMessage(), old_explode(), ReadMessage(), RemoveFolder(), Reply(), SaveMessage(), update() und write_mail().

00996                                   {
00997 
00998   string *strargs;
00999   int i,nrargs;
01000   
01001   update();
01002 
01003   if (!str || str=="" || !(nrargs=sizeof(strargs=old_explode(str[0..0]+lower_case(str[1..])," ")))) {
01004     ListContent();
01005     return input();
01006   }
01007   strargs[0]=strargs[0][0..3];
01008   if (IS_NUMBER(strargs[0])) {
01009     strargs=({"lies",strargs[0]});
01010     nrargs=2;
01011   }
01012   DEBUGVAR(strargs);
01013   switch (strargs[0]) {
01014   case "q":                    // quit
01015   case "quit": 
01016     remove(); return;
01017   case "?":                    // Hilfeseite
01018   case "hilf":
01019   case "h":
01020     MediumHelpPage();
01021     return;
01022   case "oeff":                 // change folder
01023   case "c": 
01024     if (nrargs<2) {
01025       write("Welchen Ordner willst Du oeffnen (Name, Nummer, +, -)?\n");
01026       break;
01027     }
01028     ChangeFolder(strargs[1]);
01029     break;
01030   case "ordn":                 // list folders
01031   case "i": 
01032     ListFolders();
01033     break;
01034   case "anze":                 // list content
01035   case "l":
01036     ListContent();
01037     break;
01038   case "alia":                 // list aliases
01039   case "a":
01040     ListAliases();
01041     break;
01042   case "erze":                 // make new folder
01043   case "n": 
01044     if (nrargs<2) {
01045       write("Bitte als Argument einen Namen fuer den neuen Ordner angeben!\n");
01046       break;
01047     }
01048     MakeFolder(lower_case(strargs[1]));
01049     break;
01050   case "entf":                 // delete folder
01051   case "e": 
01052     if (nrargs<2) {
01053       write("Bitte als Argument Name oder Nummer des zu loeschenden Ordners angeben.\n");
01054       break;
01055     }
01056     RemoveFolder(GetFolderName(strargs[1]));
01057     break;
01058   case "loes":                 // delete message
01059   case "d":
01060     if (nrargs==1) DeleteMessage(({akt_nr-1}));
01061     else DeleteMessage(GetNumbers(strargs[1..]));
01062     break;
01063   case "schr":                 // write mail
01064   case "m": 
01065     if (nrargs<2) {
01066       write("Bitte Empfaenger als Argument angeben!\n");
01067       break;
01068     }
01069     write_mail(strargs[1..]);
01070     return;
01071   case "vers":                 // move message to other folder
01072   case "verl":
01073   case "v":
01074     if (nrargs<2 || (nrargs>2 && !IS_NUMBER(strargs[1]))) {
01075       write("Syntax: v [nr|nr-nr [nr|nr-nr ...]] <ordnername>|<ordnernr>|+|-\n");
01076       break;
01077     }
01078     if (nrargs==2) MoveMessage(({akt_nr-1}),GetFolderName(strargs[1]));
01079     else MoveMessage(GetNumbers(strargs[1..<2]),GetFolderName(strargs[<1]));
01080     update(0,1);  // unbedingt neuladen.
01081     break;
01082   case "bean":
01083   case "r":
01084   case "grup":
01085   case "g":
01086     if (nrargs<2) { 
01087       if (Reply(akt_nr-1,(strargs[0][0]=='g'))) return;
01088       break;
01089     }
01090     if (!IS_NUMBER(strargs[1])) {
01091       write("Argumentfehler: Bitte Nummer des Briefes angeben, auf den sich die Antwort\n"
01092                     "beziehen soll. Ohne Argument bezieht sie sich auf den aktuellen Brief.\n");
01093       break;
01094     }
01095     if (nrargs>2) {
01096       write("Zu viele Argumente. Eine Antwort darf sich nur auf einen Brief beziehen!\n");
01097       break;
01098     }
01099     if (Reply(to_int(strargs[1])-1,(strargs[0][0]=='g'))) return;
01100     break;
01101   case "weit":
01102   case "f":
01103     if (nrargs<2 || 
01104                 (IS_NUMBER(strargs[nrargs-1])&&sizeof(old_explode(strargs[nrargs-1],"@"))==1)) {
01105       write("Syntax: f [nr|nr-nr [nr|nr-nr ...]]  empfaenger [empf2 ...]\n");
01106       break;
01107     } 
01108     if (!IS_NUMBER(strargs[1])) {
01109       if (Forward(strargs[1..],akt_nr-1)) return; 
01110     }  // return, nicht break: input() wird von get_carbon_copy() aufger.
01111     else {
01112       int pos; // letzte Position, an der eine Nummer steht
01113       
01114       for (pos=nrargs-1;pos>1&&!IS_NUMBER(strargs[pos]);pos--);
01115       if (ForwardArea(strargs[(pos+1)..],GetNumbers(strargs[1..pos])))
01116                 return;
01117     } 
01118     break;
01119   case "Weit":
01120   case "F":
01121     if (nrargs<2 || (nrargs==2 && IS_NUMBER(strargs[1]))) {
01122       write("Haeh? Bitte so: F [nr] empfaenger\n");
01123       break;
01124     }
01125     if (!IS_NUMBER(strargs[1])) {
01126       if (Forward(strargs[1..],akt_nr-1,1)) return;
01127       break;
01128     }
01129     if (IS_NUMBER(strargs[2])||member(strargs[1],'-')>=0) {
01130       write("Argumentfehler: Wenn Du eigenen Text anhaengen willst, darfst Du nur einen\n"
01131                     "Brief angeben, nicht mehrere.\n");
01132       break;
01133     }
01134     if (Forward(strargs[2..],to_int(strargs[1])-1,1)) return;
01135     break;
01136   case "lies":
01137     if (nrargs<2) { if (ReadMessage(akt_nr-1)) return; } else
01138     if (ReadMessage(to_int(strargs[1])-1)) return;
01139     break;
01140   case ".":
01141     if (ReadMessage(akt_nr-1)) return;
01142     break;
01143   case "+":
01144     if (akt_nr==sizeof(folders[1][akt_folder]))
01145       write("Noch weiter vorwaerts gehts nicht!\nMit 'c +' kannst Du den naechsten Ordner oeffnen.\n");
01146     else if (ReadMessage(akt_nr)) return;
01147     break;
01148   case "-":
01149     if (akt_nr==1)
01150       write("Noch weiter zurueck gehts nicht!\nMit 'c -' kannst Du den vorhergehenden Ordner oeffnen.\n");
01151     else if (ReadMessage(akt_nr-2)) return;
01152     break;
01153   case "spei":
01154   case "s":
01155     if ((nrargs==2 && !IS_NUMBER(strargs[1]))) {
01156       write("Syntax: s [nr|nr-nr [nr|nr-nr ...]]\n");
01157       break;
01158     }
01159     if (nrargs==1) (SaveMessage(({akt_nr-1})));
01160     else (SaveMessage(GetNumbers(strargs[1..])));
01161     break;
01162   default:
01163     write("Kommando nicht verstanden. Eine Hilfsseite bekommst Du mit 'h'.\n");
01164     break;
01165   }
01166   return input();
01167 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static void MakeFolder ( string  s  )  [static]

Definiert in Zeile 709 der Datei mailer.c.

Benutzt MAILDEMON und name.

Wird benutzt von mail_cmds().

00709                                  {
00710   int ret;
00711   if (sscanf(s,"%d",ret)||s[0]<'a'||s[0]>'z') return
00712      write("Um Probleme zu vermeiden, duerfen Ordner nicht mit Nummern oder Sonderzeichen\nbezeichnet werden.\n");
00713   if (s=="newmail"||s=="unread") return
00714     write("Die Ordnernamen 'newmail' und 'unread' sind reserviert.\n");
00715   ret=MAILDEMON->MakeFolder(s, name);
00716   if (ret==1) write("Ok, neuer Ordner mit Namen "+s+" angelegt.\n");
00717   else write("Ein Ordner mit dem Namen existiert bereits.\n");
00718   return;
00719 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static void MediumHelpPage (  )  [static]

Definiert in Zeile 505 der Datei mailer.c.

Benutzt akt_folder, folders, input, IS_WIZARD und SAVEFILENAME.

Wird benutzt von mail_cmds().

00505                              {
00506   if (sizeof(folders[0])) 
00507     write("Aktueller Ordner ist \""+folders[0][akt_folder]+"\"\n");
00508   write("\n\
00509 Brief <nr> lesen                       '<nr>'                 (lies <nr>)\n\
00510 Aktueller / naechster / letzter Brief  '.' / '+' / '-'\n\
00511 Brief schreiben                        'm <name>'             (schreibe)\n\
00512 Brief beantworten                      'r [nr]'               (beantworte)\n\
00513 Gruppenantwort an alle Empfaenger      'g [nr]'               (gruppe)\n\
00514 Brief(e) loeschen                      'd [nummern]'          (loesche)\n\
00515 Brief(e) weitersenden                  'f [nummern] <name>'   (weiter)\n\
00516 Weitersenden plus eigenen Text         'F [nr] <name>'        (Weiter)\n\
00517 Brief(e) in anderen Ordner verschieben 'v [nummern] <ordner>' (verschiebe)\n\
00518 Mails in diesem Ordner listen          'l' (oder nichts)      (anzeigen)\n\
00519 Aktuellen Ordner wechseln              'c <ordner>'           (oeffne)\n\
00520 Neuen Ordner anlegen                   'n <ordnername>'       (erzeuge)\n\
00521 Leeren Ordner loeschen                 'e <ordner>'           (entferne)\n\
00522 Alle Ordner anzeigen                   'i'                    (ordner)\n\
00523 "+ (IS_WIZARD(this_player()) ? "\
00524 Brief(e) speichern in Datei            's [nummern]'          (speichere)\n\
00525   "+SAVEFILENAME+"\n" : "")+ "\
00526 Mailaliase anzeigen                    'a'                    (aliase)\n\
00527 Verfuegbare Kommandos zeigen           '?' oder 'h'\n\
00528 Postmenue verlassen                    'q'\n\
00529 Kommando <cmd> ausfuehren              '!<cmd>'\n\
00530 [nummern] bedeutet: [nr|nr-nr [nr|nr-nr ...]]. (Liste von Nr und Bereichen)\n\
00531 Bei der Langform reicht es, die ersten 4 Zeichen eines Kommandos anzugeben.\n\
00532 Falls ein Befehl (z.B. \'v\' nicht funktioniert, pruefe bitte, ob dies ein \n\
00533 clientseitiges Makro bei Dir ist.\n\
00534 ");
00535   return input();
00536 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static string Message2string ( int  nr  )  [static]

Definiert in Zeile 897 der Datei mailer.c.

Benutzt akt_folder, folders, message, MSG_BODY, MSG_CC, MSG_DATE, MSG_FROM, MSG_RECIPIENT, MSG_SENDER, MSG_SUBJECT und x.

Wird benutzt von ForwardArea(), ReadMessage() und SaveMessage().

00897                                      {
00898   mixed letter;
00899   string message;
00900   int x;
00901   if (!pointerp(folders)||!pointerp(folders[0])||
00902       sizeof(folders[0])<=akt_folder){
00903     write("Seltsamer Fehler: Kein aktueller Ordner!\n");
00904     return 0;
00905   }
00906   if (!pointerp(folders[1][akt_folder]) ||
00907       sizeof(folders[1][akt_folder])<=nr ||
00908       nr<0) {
00909     write("Diese Nummer gibt es in diesem Ordner nicht!\n");
00910     return 0;
00911   }
00912   letter=folders[1][akt_folder][nr];
00913   message=
00914        "Absender: "+capitalize(letter[MSG_FROM])+"\n"+
00915        ((letter[MSG_FROM]==letter[MSG_SENDER]) ? "" :
00916                 "Abgesandt aber von: "+capitalize(letter[MSG_SENDER])+"\n") +
00917        "An: "+capitalize(letter[MSG_RECIPIENT]);
00918   if (stringp(letter[MSG_CC]) && letter[MSG_CC]!="" ||
00919       pointerp(letter[MSG_CC]) && sizeof(letter[MSG_CC])) {
00920     message+="\nCc: ";
00921     if (!pointerp(letter[MSG_CC])) message+=capitalize(letter[MSG_CC]);    
00922     else message+=implode(map(letter[MSG_CC],#'capitalize),", ");//'))
00923   }
00924   message+="\nDatum: "+letter[MSG_DATE]+"\n"+
00925 /* Sinnlos, oder? "Id: "+letter[MSG_ID]+"\n"+ */
00926       "Titel: "+letter[MSG_SUBJECT]+"\n\n"+
00927                 letter[MSG_BODY]+"\n\n";
00928   return message;
00929 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static int MoveMessage ( mixed  msg,
mixed  fol 
) [static]

Definiert in Zeile 762 der Datei mailer.c.

Benutzt akt_folder, akt_nr, folders, MAILDEMON und name.

Wird benutzt von mail_cmds().

00762                                             {
00763   int ret,i;
00764   
00765   for (i=0;i<sizeof(msg);i++) {
00766     ret=MAILDEMON->MoveMsg(msg[i]-i, akt_folder, fol, name);
00767     switch(ret) {
00768     case 1:
00769       write("Brief "+(msg[i]+1)+" verschoben nach "+fol+".\n");
00770       break;
00771     case 0: 
00772       write("So viele Briefe sind nicht im aktuellen Ordner.\n"); return 0;
00773     case -1:
00774       write("Seltsamer Fehler - duerfte eigentlich nicht passieren:\n'Kein aktueller Ordner.'\n"); return -1;
00775     case -3:
00776       write("Den Zielordner "+fol+" gibt es nicht!\n"); return ret;
00777     default:
00778       write("MAILDEMON: MoveMsg Interner Fehler "+ret+". Bitte Erzmagier verstaendigen.\n"); return ret;
00779     }
00780   }
00781   if (akt_nr>=sizeof(folders[1][akt_folder])) 
00782     akt_nr=sizeof(folders[1][akt_folder])-1;
00783   
00784   return ret;
00785 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

mixed postneustart (  ) 

Definiert in Zeile 166 der Datei mailer.c.

Benutzt input, name, nedittext und RescueText().

00166                      {
00167   if (!this_interactive() || name!=geteuid(this_interactive())
00168       || query_input_pending(this_interactive())
00169       || this_interactive()!=this_player()) return 0;
00170   write("Und weiter gehts...\n");
00171   if (nedittext) return RescueText();
00172   return input();
00173 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static mixed process_names ( mixed  s  )  [static]

Definiert in Zeile 1202 der Datei mailer.c.

Benutzt domain und h.

Wird benutzt von Forward(), ForwardArea(), get_carbon_copy(), GetAlias(), RecurseProcessNames() und write_mail().

01202                                     {
01203   mixed a1,a2,h;
01204   int i;
01205   string domain;
01206 
01207   if (stringp(s)) {
01208       a1=explode(regreplace(lower_case(s),","," ",1)," ")-({""});
01209   }
01210   else a1=s;
01211   a2=({});
01212   foreach(string str: a1)
01213     a2+=explode(str,",");
01214 
01215   a1=({});
01216 
01217 //  printf("DEBUG ANFANG: %O\n",a2);
01218 
01219   foreach(string str: a2) { 
01220       if( !strlen(str) ) continue;
01221       if (sscanf(str,"d.%s",domain)) {
01222                   h=(get_dir("/d/"+domain+"/*")||({}))-({".",".."});
01223                   // h immer ein Array
01224                   h=filter(h,#'query_wiz_level);
01225                   if (sizeof(h))
01226                     a1+=h;
01227                   else
01228                     a1+=({"d."+domain});
01229       }
01230       else if (str=="freunde") 
01231                 a1+=("/p/service/tiamak/obj/fbmaster"->get_friends(getuid(this_player()), 8));
01232       else if (str=="me") 
01233                 a1+=({this_player()->QueryProp(P_MAILADDR)});
01234       else if (aliases[str]) 
01235                 a1+=GetAlias(str);
01236 #ifdef MAIL_SUPPORT_BCC
01237     else if (str[0]=='-')
01238                 a1+=map(RecurseProcessNames(str[1..]), function string (string x) {
01239                     return("-"+x);});
01240 #endif
01241     else if ( (str[0]>='a' && str[0]<='z') 
01242                 || (sscanf(str,"%s@%s",domain,domain)) 
01243                 || str[0]=='\\') 
01244                 a1+=({str});
01245   }
01246   
01247 //  printf("DEBUG ENDE: %O\n",a1);
01248 
01249   a1=filter(a1,function int (string x) 
01250       { return(strlen(x)>1); } );
01251 
01252   return(map(a1,#'lower_case));
01253 } 

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static void prompt (  )  [static]

Definiert in Zeile 1172 der Datei mailer.c.

Benutzt akt_folder, akt_nr, folders, path und update().

Wird benutzt von input() und prompt().

01172                      {
01173   string path;
01174   
01175   update();
01176   if (!pointerp(folders)||!pointerp(folders[0])||
01177      sizeof(folders[0])<=akt_folder)
01178     path="(kein Ordner)";
01179   else
01180     path= "(" + folders[0][akt_folder] + ":" +
01181       ( sizeof(folders[1][akt_folder]) ?
01182        akt_nr + "/" + sizeof(folders[1][akt_folder]) :
01183        "leer") + ")";
01184   write(path + " [Hilfe mit h] => ");
01185 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

public nomask int query_prevent_shadow (  ) 

Definiert in Zeile 1362 der Datei mailer.c.

01362 { return 1; }

static mapping Read_mailrc ( string  file  )  [static]

Definiert in Zeile 1262 der Datei mailer.c.

Wird benutzt von do_mail().

01262                                         {
01263   mapping al;
01264   int i;
01265   mixed ar;
01266   string s1,s2;
01267 
01268   if (!(ar=read_file(file))) {
01269 //   write(file+" not readable\n");
01270     return ([]);
01271   }
01272   al=([]);
01273   ar=explode(ar,"\n");
01274   for (i=sizeof(ar)-1;i>=0;i--)
01275     if (sscanf(ar[i],"%s %s",s1,s2)==2) 
01276       al+=([s1:s2]);
01277 //  printf("Got aliases %O",al);
01278   return al;
01279 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static int ReadMessage ( int  nr  )  [static]

Definiert in Zeile 887 der Datei mailer.c.

Benutzt akt_folder, akt_nr, folders, message und Message2string().

Wird benutzt von mail_cmds().

00887                                {
00888   if (nr<sizeof(folders[1][akt_folder]) && nr>=0)
00889     akt_nr=nr+1;
00890   message=Message2string(nr);
00891   if (!message) return 0;
00892   this_player()->More(message,0,#'input); //')
00893   return 1;
00894 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static mixed RecurseProcessNames ( mixed  a  )  [static]

Definiert in Zeile 1258 der Datei mailer.c.

Benutzt process_names().

01258 { return process_names(a); }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static int RemoveFolder ( string  x  )  [static]

Definiert in Zeile 722 der Datei mailer.c.

Benutzt MAILDEMON und name.

Wird benutzt von mail_cmds().

00722                                   {
00723   int ret;
00724   if (!x) return -42;    // folder existiert nicht, Fehlermeldung bereits geg.
00725 //  if (intp(x)) x=folders[0][x];
00726 
00727   if (x=="newmail") return
00728     write("Der Ordnername 'newmail' ist reserviert.\nDieser Ordner darf nicht geloescht werden.\n"),-43;
00729 
00730   ret=MAILDEMON->RemoveFolder(x, name);
00731   switch (ret) {
00732   case 1: write("Ordner "+x+" geloescht.\n"); break;
00733   case -1: write("Kein solcher Ordner.\n"); break;
00734   case 0: write("Der Ordner war nicht leer - nicht geloescht.\n"); break;
00735   default: write("Fehler Nummer "+ret+" - was auch immer das heisst...\n"); break;
00736   }
00737   return ret;
00738 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs int Reply ( int  nr,
int  group 
) [static]

Definiert in Zeile 788 der Datei mailer.c.

Benutzt akt_folder, DEBUGVAR, folders, GetReTitle(), MSG_BODY, MSG_CC, MSG_FROM, MSG_RECIPIENT, MSG_SUBJECT, name und write_mail().

Wird benutzt von mail_cmds().

00788                                            {
00789   mixed to,dummy;
00790   if (!pointerp(folders)||!pointerp(folders[0])||
00791       sizeof(folders[0])<=akt_folder) {
00792     write("Seltsamer Fehler: Kein aktueller Ordner!\n");
00793     return 0;
00794   }
00795   if (nr<0 || !pointerp(folders[1][akt_folder]) ||
00796       sizeof(folders[1][akt_folder])<=nr){
00797     write("Einen Brief mit Nummer "+(nr+1)+" gibt es in diesem Ordner nicht!\n");
00798     return 0;
00799   }
00800 
00801   if (sscanf("\n"+lower_case(folders[1][akt_folder][nr][MSG_BODY]),
00802                      "%s\nreply-to:%s\n",dummy,to)==2) { // Reply-to gesetzt
00803     while (to[0]==' ') to=to[1..]; // ueberschuessige Leerzeichen entfernen
00804     while (to[<1]==' ') to=to[0..<2];
00805   }
00806   else 
00807     to=folders[1][akt_folder][nr][MSG_FROM];
00808   if (group) // Gruppenantwort
00809     to=({to,
00810         folders[1][akt_folder][nr][MSG_RECIPIENT]})+
00811        (pointerp(folders[1][akt_folder][nr][MSG_CC]) ? folders[1][akt_folder][nr][MSG_CC] : ({}))
00812        -({name});
00813 #ifdef DEBUG
00814      DEBUGVAR(name);
00815      DEBUGVAR(to);
00816 #endif
00817   write_mail(to,GetReTitle(folders[1][akt_folder][nr][MSG_SUBJECT]));
00818   return 1;
00819 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void reset ( void   ) 

Definiert in Zeile 149 der Datei mailer.c.

Benutzt find_player(), name, nedittext und pl.

Wird benutzt von CmdModus(), CmdRefresh(), create() und reset().

00149              {
00150   object pl;
00151   (::reset());
00152   if (!name) {remove();return;}
00153   pl=find_player(name);
00154   if (!pl || environment()!=pl) {remove();return;}
00155   if (nedittext && !query_input_pending(pl)) {
00156     tell_object(pl,"\
00157 *** Hoppla! Du hast noch einen nicht fertiggeschriebenen Brief!\n\
00158 *** Mit ~r kannst Du weiterschreiben.\n");
00159     return;
00160   }
00161   if (query_input_pending(pl)!=this_object())
00162      {remove();return;}
00163 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs int SaveMessage ( int *  nrs  )  [static]

Definiert in Zeile 942 der Datei mailer.c.

Benutzt IS_WIZARD, LagWarning(), Message2string(), SAVEFILENAME und x.

Wird benutzt von mail_cmds().

00942                                           {
00943   int x,nr;
00944   string rest;
00945   mixed letter;
00946 
00947   if (!IS_WIZARD(this_player())) {
00948     write("Das koennen nur Magier!\n");
00949     return 0;
00950   }
00951   if (!sizeof(nrs)) {
00952     write("Speichere nichts.\n");
00953     return 1;
00954   }
00955   
00956   if ( sizeof(nrs) > 15 ) LagWarning();
00957 
00958   for (nr=0;nr<sizeof(nrs);nr++) {
00959     write("Speichere Brief "+(nrs[nr]+1)+": ");
00960     letter=Message2string(nrs[nr]);
00961     letter+="----------------------------------------------------------------------\n";
00962     if (!letter) {
00963       write("Speichern unmoeglich.\n");
00964       return 0;
00965     }
00966     if (!write_file(SAVEFILENAME, letter))
00967       write("Brief zu lang!\n");
00968     else
00969       write("Ok.\n");
00970   }
00971   write("Speichern nach "+SAVEFILENAME+" fertig.\nBitte denk dran, diese Datei wieder zu loeschen!\n");
00972   return 1;
00973 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs string * send_mail ( mixed  back  )  [static]

Definiert in Zeile 367 der Datei mailer.c.

Benutzt blindcarbon, carbon, ctime(), DEBUGVAR, MAILDEMON, message, MSG_BCC, MSG_BODY, MSG_CC, MSG_DATE, MSG_FROM, MSG_ID, MSG_RECIPIENT, MSG_SENDER, MSG_SUBJECT, NO_SYSTEM_ALIASES, NO_USER_ALIASES, office_name, receiver und subject.

Wird benutzt von get_carbon_copy().

00367                                              {
00368   mixed *mail;
00369   
00370   mail=allocate(9);
00371 
00372 #ifdef DEBUG
00373   DEBUGVAR(receiver);
00374   DEBUGVAR(carbon);
00375 #endif
00376 
00377   if (!pointerp(carbon) || !sizeof(carbon)) carbon=0;
00378   mail[MSG_FROM]=this_player()->query_real_name();
00379   mail[MSG_SENDER]=office_name;
00380   mail[MSG_RECIPIENT]=(back ? mail[MSG_FROM] : receiver);
00381   mail[MSG_CC]=(back ? 0 : carbon);
00382 #ifdef MAIL_SUPPORT_BCC
00383   mail[MSG_BCC]=blindcarbon;
00384 #else
00385   mail[MSG_BCC]=0;
00386 #endif
00387 
00388   mail[MSG_SUBJECT]=(back ? "Zurueck! Empfaenger unbekannt: "+implode(back,", ") : subject);
00389   mail[MSG_DATE]=ctime(time());
00390   mail[MSG_ID]="MorgenGrauen:"+time();
00391   mail[MSG_BODY]=message;
00392   return MAILDEMON->DeliverMail(mail,NO_SYSTEM_ALIASES|NO_USER_ALIASES);
00393 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs void SendMail ( string  text,
int  flag 
) [static]

Definiert in Zeile 235 der Datei mailer.c.

Benutzt carbon, directflag, get_carbon_copy(), input, input_to(), message, receiver und subject.

Wird benutzt von get_carbon_copy(), get_subject() und write_mail().

00235                                                    {
00236   // flag: 1 = keine CC abfragen.
00237   if (!text) {
00238     write("Abbruch! Brief landet im Reisswolf.\n");
00239     if (directflag) {remove(); return;
00240     }
00241     
00242     subject=receiver=carbon=message=0;
00243     return input();
00244   }
00245   message=text;
00246   if (flag) return get_carbon_copy(0);
00247   write("Cc: ");
00248   input_to("get_carbon_copy");
00249   return;
00250 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

string SetOfficeName ( string  n  ) 

Definiert in Zeile 176 der Datei mailer.c.

Benutzt office_name.

00176                                {
00177   return office_name=n;
00178 }

string * unify_array ( string *  a  ) 

Definiert in Zeile 1282 der Datei mailer.c.

Wird benutzt von get_carbon_copy().

01282                                  {
01283 //  int i;
01284 //  for (i=sizeof(a)-1;i>=0;i--) a=a-({a[i]})+({a[i]});
01285 // Rikus 14.02.2001
01286   a=m_indices(mkmapping(a));
01287   return a;
01288 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs void update ( int  directflag,
int  nocondflag 
) [static]

Definiert in Zeile 559 der Datei mailer.c.

Benutzt akt_folder, akt_nr, break_string(), DEBUGVAR, find_player(), folders, GetFolders(), MAILDEMON, member_array(), msg(), MSG_BCC, MSG_BODY, MSG_CC, MSG_FROM, MSG_RECIPIENT, MSG_SUBJECT, name, NO_SYSTEM_ALIASES, NO_USER_ALIASES, office_name, P_IGNORE und QueryProp().

Wird benutzt von DeleteMessage(), do_mail(), ListContent(), ListFolders(), mail_cmds() und prompt().

00559                                                           {
00560   // directflag: Mailer wird im Direktmodus betrieben
00561   // nocondflag: Unbedingt neuladen
00562 
00563   int i,j,k,newletters;
00564   mixed *ignored;
00565   
00566   if (!GetFolders(nocondflag)) return; // es hat sich nix getan
00567 
00568   if (akt_nr<1) akt_nr=1;
00569 
00570   DEBUGVAR(akt_folder);
00571 
00572   if (akt_folder>=sizeof(folders[0]) || akt_folder<0) {
00573     akt_folder=member_array("newmail",folders[0]);
00574     if (akt_folder==-1) {
00575       MAILDEMON->MakeFolder("newmail",name);
00576       GetFolders(1);
00577       DEBUGVAR(folders[0]);
00578       akt_folder=member_array("newmail",folders[0]);
00579     }
00580     if (!directflag && akt_folder!=-1) write("Ordner 'newmail' aufgeschlagen.\n");
00581   }
00582 
00583 //  if (!pointerp(folders)) return write("ERROR: folders no array in update\n"); // Kann eigentlich nicht vorkommen
00584   if (sizeof(folders[0]) && akt_nr>sizeof(folders[1][akt_folder]))
00585     akt_nr=sizeof(folders[1][akt_folder]);
00586   j=member_array("unread",folders[0]);
00587   if (j==-1) return;
00588   newletters=0;
00589 
00590   // Testweise eine neue Version, die aber voraussetzt, dass die Position von
00591   // unread in der Folderliste von /secure/mail waehrend der Aktion
00592   // nicht veraendert wird.
00593   // alt ausgeklammert, ausserdem ueberall 0 statt k
00594   //  k=0;
00595   // Neue Version wieder testweise drin
00596 
00597   //  while (j != -1 && pointerp(folders[1][j]) && sizeof(folders[1][j])>0) {
00598   for (k=0;k<sizeof(folders[1][j]);k++) {
00599 
00600     //    write("DEBUG: j="+j+"\n");
00601     
00602     if (pointerp(ignored=this_player()->QueryProp(P_IGNORE)) &&
00603                                 member(ignored, lower_case(folders[1][j][k][MSG_FROM]+".mail"))>=0) {
00604       mixed msg;
00605       msg=folders[1][j][k];
00606       write("Du laesst einen Brief von "+capitalize(msg[MSG_FROM])+
00607                     " unbesehen zurueckgehen.\n");
00608       msg[MSG_BODY]=this_player()->name()+" \
00609 hat diesen Brief ungeoeffnet an Dich zurueckgehen lassen\n\
00610 und moechte nicht mehr von Deinen Briefen belaestigt werden.\n\
00611 Titel: "+msg[MSG_SUBJECT]+"\n\
00612 ------ Inhalt: ------------------------\n"+
00613   msg[MSG_BODY];
00614       msg[MSG_RECIPIENT]=msg[MSG_FROM];
00615       msg[MSG_SUBJECT]="Annahme verweigert - zurueck an Absender";
00616       msg[MSG_CC]=0;
00617       msg[MSG_BCC]=0;
00618       MAILDEMON->DeliverMail(msg,NO_SYSTEM_ALIASES|NO_USER_ALIASES);
00619       if (find_player(msg[MSG_RECIPIENT]))
00620                 tell_object(find_player(msg[MSG_RECIPIENT]),
00621                                     "Ein Postreiter ruft Dir aus einiger Entfernung leicht sauer zu, dass er einen\nzurueckgekommenen Brief fuer Dich hat.\n");
00622       MAILDEMON->RemoveMsg(0,j,name);
00623     } else {
00624     // Testweise durch DeleteUnreadFolder ersetzt (080297)
00625 #ifndef MAILDEMON0297
00626       MAILDEMON->MoveMsg(0, j, "newmail", name);
00627 #endif
00628       newletters++;
00629     }
00630     // GetFolders(1);
00631     // j=member_array("unread",folders[0]);
00632     // Letzte 2 Zeilen in "neuer" Version ersatzlos gestrichen
00633   }
00634 
00635 #ifdef MAILDEMON0297
00636   MAILDEMON->DeleteUnreadFolder(name);
00637 #else
00638   MAILDEMON->RemoveFolder("unread",name);
00639 #endif
00640   if (newletters) {
00641     if (office_name=="mpa Kurierdienst") 
00642       write(break_string("Ein Kurier sagt \"Tach, Post!\", drueckt Dir "+
00643                     ((newletters==1) ? "einen neuen Brief" : newletters+" neue Briefe")
00644                     +" in die Hand und verschwindet wieder.\n",78));
00645     else 
00646       write("Du siehst, wie ein Postbeamter "+
00647                     ((newletters==1) ? "einen neuen Brief" : newletters+" neue Briefe")
00648                     +" in Dein Fach legt.\n");
00649   }
00650   GetFolders(1); // jetzt ohne unread, damit im endgueltigen Zustand.
00651   while (akt_folder>=sizeof(folders[0])) akt_folder--;
00652   if ((!akt_nr)&&sizeof(folders[1][akt_folder])) akt_nr=1;
00653 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static varargs void write_mail ( mixed  str,
string  std_subject,
string  text 
) [static]

Definiert in Zeile 181 der Datei mailer.c.

Benutzt carbon, directflag, h, input, input_to(), process_names(), receiver, SAVEPATH, SendMail() und subject.

Wird benutzt von do_mail(), mail_cmds() und Reply().

00181                                                                            {
00182   string str2;
00183   int h;
00184   
00185   carbon=process_names(str);
00186   if (!sizeof(carbon)) { 
00187     write("Kein Empfaenger angegeben!\n"),(directflag?remove():input());
00188     return;
00189   }
00190   write("Empfaenger: "+implode(map(carbon,#'capitalize/*'*/),", ")+"\n");
00191   str=carbon[0];
00192   if (sizeof(carbon)>=2) carbon=carbon[1..<1];
00193   else carbon=0;
00194   if ((str2=str) && str2!="" && str2[0]=='\\') str2=str2[1..];
00195   if (!str) { write("WEM willst Du schreiben?\n"),(directflag?remove():input()); return;
00196   }
00197   if (((catch(h=file_size("/"+SAVEPATH+str2[0..0]+"/"+str2+".o"))),h<=0 
00198        && member(str2,'@')==-1))
00199     { write("Mit dem Namen gibt es hier niemanden.\n"),(directflag?remove():input());
00200     return;
00201     }
00202   
00203   receiver=str;
00204 
00205   if (text) {
00206     subject=std_subject;
00207     return SendMail(text,1);  // flag 1: keine CC's bitte.
00208   }
00209 
00210   write("Titel");
00211   if (std_subject) write(" ("+std_subject+")");
00212   write(": ");
00213   subject=std_subject;
00214   input_to("get_subject");
00215   return;
00216 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:


Variablen-Dokumentation

int akt_folder [static]
int akt_nr [static]

Definiert in Zeile 104 der Datei mailer.c.

Wird benutzt von ChangeFolder(), ListContent(), mail_cmds(), MoveMessage(), prompt(), ReadMessage() und update().

mapping aliases [static]

Definiert in Zeile 106 der Datei mailer.c.

Wird benutzt von do_mail(), GetAlias() und ListAliases().

string* blindcarbon [static]

Definiert in Zeile 101 der Datei mailer.c.

Wird benutzt von get_carbon_copy() und send_mail().

string * carbon [static]

Definiert in Zeile 99 der Datei mailer.c.

Wird benutzt von Forward(), ForwardArea(), get_carbon_copy(), send_mail(), SendMail() und write_mail().

int directflag [static]

Definiert in Zeile 104 der Datei mailer.c.

Wird benutzt von do_mail(), get_carbon_copy(), SendMail() und write_mail().

int done [static]

Definiert in Zeile 104 der Datei mailer.c.

int folder_date [static]

Definiert in Zeile 105 der Datei mailer.c.

Wird benutzt von create() und GetFolders().

int folder_size [static]

Definiert in Zeile 105 der Datei mailer.c.

Wird benutzt von create() und GetFolders().

mixed* folders
int i [static]

Definiert in Zeile 104 der Datei mailer.c.

Wird benutzt von __find_objects(), _call_DoDecay(), _channel(), _cl(), _cleanup_projects(), _clone_items(), _crypt(), _decrypt(), _ed(), _examine(), _frieden(), _guthaben(), _illegal_closure(), _instance_upd(), _inventory(), _make(), _make_dep(), _man(), _mecho(), _parseargs(), _pwho(), _query_exits(), _query_lightdesc(), _query_plural(), _query_questpoints(), _query_special_exits(), _query_total_light(), _return_args(), _send_udp(), _sense_exa(), _set_resistance(), _set_vulnerability(), _showprops(), _transfer(), access_rights(), add_fp(), AddAction(), AddCmd(), AddEPObject(), AddExit(), AddFixedObject(), AddFP(), AddGroup(), AddInfo(), AddItem(), AddPlant(), AddQuest(), AddRoute(), AddSkillMappings(), AddSpecialInfo(), AddToMenu(), area_check(), array_desc(), arrayconvert(), arrayprint(), ArticleList(), ask_question(), ask_race_question(), askSurveyorsForRegistrationAllowance(), asynchron(), aufraeumen(), auswertung(), AutoAttack(), BanishName(), besetzt(), broken_count_bits(), cache_directory(), call(), Catchup(), check_restrictions(), check_to_fast(), CheckClockMsg(), CheckFormation(), CheckSensitiveAttack(), CheckThreads(), clean_netdead(), clean_up(), cmd_inv(), cmd_memory(), cmd_stack(), cmdline(), Command(), comment(), ConvMaterialList(), CountUp(), CountUpNames(), create(), CreateLink(), CycleRows(), decode(), DecodeFlag(), DeepPrintShort(), DeepQueryMoney(), DeepTransferMoney(), delete_door(), delete_exit(), delete_item(), DeleteQuest(), DeliverMail(), do_cmd(), do_find_route(), do_list(), do_mail(), do_rinv(), do_update(), DoChangeRow(), DoItNow(), domain_master(), door_message_other(), door_redisplay(), doReadMail(), Drink(), dtdump(), Dump(), dump_file(), DumpArray(), dumpEPObjects(), DumpMapping(), DumpNPCs(), encode_packet(), EndQuery(), epilog(), eval(), eval_enemies(), exec_playerob(), exit_redisplay(), exit_redisplay2(), expand(), expandSystemRecursive(), explode_files(), file_list(), filter_users(), filter_who_options(), find_best_armour(), find_best_armours(), find_best_combat_command(), find_best_weapon(), find_living(), find_netdead(), find_player(), find_snooped(), find_userinfo(), FindDistantGroups(), FindGroupP(), findObjectInTypeArr(), FingerMail(), Flee(), flush(), format_notes(), frag(), get_carbon_copy(), get_pending_deliveries(), get_rooms(), get_sequence(), getDeps(), GetExits(), getflags(), GetGroupName(), GetKeys(), getKeys(), GetList(), getmanpage(), getMatch(), getMatchArch(), getmode(), GetPlayerAdverb(), ginfo(), give_objects(), go_door(), GoblinCmdWaaagh(), good_password(), GroupList(), gtell(), guild_master(), GuildRating(), HasRoute(), heart_beat(), Identify(), ignoriere(), info(), InformPlayers(), inhalt(), Inheritance(), init(), init_doors(), insert_detail(), insert_door(), insert_exit(), insert_paths(), InsertEnemy(), InsertEnemyTeam(), InsertSensitiveObjectToList(), InterpretTime(), invcheck(), item_redisplay(), killctrl(), lauf(), list_data(), list_late_players(), liste(), listinv(), ListSins(), Load_NumKey(), load_player_object(), logon2(), long(), long_get_dir(), look_doors(), mailread(), make(), make_unique(), MakeFormation(), makeTiplistFromBitString(), match_item(), match_living(), MaterialGroup(), MaterialName(), mbanish(), menue_text(), Message(), Message2string(), mixed_to_string(), mk_autoload(), mk_waitfor(), MoreFile(), move(), MoveMessage(), NewDoor(), no_attack(), notify_player_change(), notifyExpiredModifiers(), oeffnen(), out_of_fuel(), parse(), parseargs(), parsecommand(), parseText(), partyliste(), present_objects(), PresentEnemyRows(), PresentPosition(), PresentTeamPositions(), PresentTeamRows(), PreventEnter(), PreventInsert(), PrintObj(), ProcessList(), put_objects(), QuarterReached(), query_add_details(), query_aliases(), Query_Keys(), Query_Quest(), Query_Quests(), query_status(), query_thresholds(), query_weight_contents(), QueryBanished(), QueryGroupedKeys(), QueryLEP(), QueryLong(), QueryObject(), QueryProperties(), QueryQuest(), QueryTBanished(), QueryWhoListe(), QueryWizardRequirements(), RandomChangeRow(), reallocate_histbuf(), Recalculate(), RecalculateQP(), reduce_hit_points(), RegisterExit(), RegisterItem(), RegisterTeam(), Registration(), reise(), ReloadBanishFile(), remove_alist(), remove_fp(), RemoveCmd(), RemoveExit(), RemoveFixedObject(), RemoveFolder(), RemoveFP(), RemoveObject(), RemoveSensitiveObjectFromList(), RemoveTmpProp(), renew_variables(), replace_personal(), Request(), reset(), reset_doors(), reset_vars(), restart_heart_beats(), restore_stack(), retry_send(), rubrik(), rubriken(), scan_obj(), scan_objects(), schliessen(), score(), secure(), select_race(), SelectFarEnemy(), SelectNearEnemy(), set_add_detail(), set_object_living_name(), set_raum(), SetProperties(), short(), show_age(), show_all_details(), show_detail(), show_hist(), show_objects(), show_statistic(), ShowPropList(), ShowTeamRows(), ShowWritten(), sinners(), SkillListe(), special_detail_doors(), sponsoring(), StartQuery(), startup_telnet_negs(), stk(), stop_heart_beats(), StraightExits(), strArr(), substitute(), tAddCmd(), team_list(), telnet_neg(), time2string(), tmhist(), to_filename(), todo_save(), udp_channel(), udp_htmlwho(), udp_query(), udp_tell(), udp_who(), uebersicht(), unalias(), Uncatchup(), updall(), update_buffers(), update_cache(), update_header_file(), UpdateActRow(), upperstring(), UseHands(), valid_name(), Validate(), waehle(), waehle_2(), Walk(), walk_random(), wear_best_armours(), who(), WriteRoomMessage(), ww(), Xcallouts(), Xcmds(), Xdo(), Xdupdate(), XFindObj(), Xforall(), Xgrep(), XGrepFile(), zeige_seite() und ZTAuswahl().

string message [static]
string name [static]

Definiert in Zeile 103 der Datei mailer.c.

Wird benutzt von _check_immortality(), _check_unwear_restrictions(), _check_wear_restrictions(), _communicate(), _do_unwear(), _query_name(), _query_no_attack(), _query_noget(), _query_race(), _set_name(), _set_poison(), _setdmsg(), _zap_message(), banish(), bete(), catch_tell(), clnof(), clone(), cmd_shoot(), command_me(), create(), Crumble(), CustomizeObject(), dam_descr(), DeleteMessage(), DeleteUser(), direct_move(), do_frage(), do_mail(), DoClose(), DoDrink(), DoLookInside(), DoOpen(), DoPour(), doUnwearMessage(), DoUnwield(), doUnwieldMessage(), doWearMessage(), DoWield(), doWieldMessage(), eat_this(), emote(), essen(), extinguish(), find_best_combat_command(), find_living_nr(), FindRangedTarget(), frage(), fuelle(), get_killer(), GetFolders(), GiveMiniQuest(), gtell(), heart_beat(), init(), Initialize(), kampfende(), KillGroup(), leere(), lies(), light(), ListFolders(), load_player_ob_2(), load_player_object(), loesche(), logon2(), long(), MakeFolder(), mampf(), maybe_own_stuff(), mbanish(), Message(), MixedOut(), move(), MoveMessage(), murks(), Name(), name(), nimm(), notify_player_change(), out_of_fuel(), ParseRemote(), playername(), postneustart(), preload(), present_objects(), QueryUser(), read_host_list(), ReadNewQuest(), reduce_hit_points(), reise(), RemoveFolder(), Reply(), reset(), sage(), save_spool_item(), scan_obj(), schleck(), self_delete2(), sell(), setexpire(), setg(), setmaxmsg(), SetUser(), show_statistic(), Show_WaitFor_Reason(), ShowTeamInfo(), shutdown(), soft_destruct_object(), stat(), tbanish(), tie(), update(), Validate(), waehle_2(), werfen(), WriteNote(), wuerfel() und Xset().

inherit NEDIT

Definiert in Zeile 69 der Datei mailer.c.

string office_name [static]

Definiert in Zeile 103 der Datei mailer.c.

Wird benutzt von create(), send_mail(), SetOfficeName() und update().

string receiver [static]

Definiert in Zeile 99 der Datei mailer.c.

Wird benutzt von Forward(), ForwardArea(), get_carbon_copy(), send_mail(), SendMail() und write_mail().

string sender [static]

Definiert in Zeile 99 der Datei mailer.c.

Wird benutzt von DeliverMail().

string subject [static]

Definiert in Zeile 99 der Datei mailer.c.

Wird benutzt von Forward(), ForwardArea(), get_carbon_copy(), get_subject(), send_mail(), SendMail() und write_mail().

inherit std thing

Definiert in Zeile 67 der Datei mailer.c.

Erzeugt am Thu Jun 3 14:39:26 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3