#include "post.h"#include <properties.h>#include <language.h>#include <config.h>#include <mail.h>#include <wizlevels.h>#include <moving.h>#include <defines.h>

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 |
| #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 | ( | n | ) | (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 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 | ( | o | ) | (objectp(o) && BLUE_NAME(o)=="/obj/mpa") |
| 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 }


| 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 }

| 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 }


| 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 }

| 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 }


| 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 }


| 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 }


| 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 }


| 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]); }

| 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 }

| 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 }


| 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 }

| 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 }

| 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 }

| static void input | ( | ) | [static] |
| 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 }

| 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 }

| 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 }


| 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 }


| 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 }

| static void MakeFolder | ( | string | s | ) | [static] |
Definiert in Zeile 709 der Datei mailer.c.
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 }

| 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 }

| 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 }

| 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 }

| 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 }

| static mixed process_names | ( | mixed | s | ) | [static] |
Definiert in Zeile 1202 der Datei mailer.c.
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 }

| 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 }


| public nomask int query_prevent_shadow | ( | ) |
| 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 }

| 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 }


| static mixed RecurseProcessNames | ( | mixed | a | ) | [static] |
Definiert in Zeile 1258 der Datei mailer.c.
Benutzt process_names().
01258 { return process_names(a); }

| static int RemoveFolder | ( | string | x | ) | [static] |
Definiert in Zeile 722 der Datei mailer.c.
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 }

| 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 }


| 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 }


| 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 }


| 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 }


| 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 }


| 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 }

| 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 }


| 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 }


int akt_folder [static] |
Definiert in Zeile 104 der Datei mailer.c.
Wird benutzt von ChangeFolder(), create(), DeleteMessage(), Forward(), GetFolderName(), GetNumbers(), ListContent(), ListFolders(), mail_cmds(), MediumHelpPage(), Message2string(), MoveMessage(), prompt(), ReadMessage(), Reply() und update().
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 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 |
Definiert in Zeile 108 der Datei mailer.c.
Wird benutzt von ChangeFolder(), DeleteUnreadFolder(), do_mail(), FingerMail(), Forward(), GetFolderName(), GetFolders(), GetNumbers(), ListContent(), ListFolders(), mail_cmds(), MakeFolder(), MediumHelpPage(), Message2string(), MoveMessage(), MoveMsg(), prompt(), ReadMessage(), RemoveFolder(), RemoveMsg(), Reply(), save_msg() und update().
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] |
Definiert in Zeile 99 der Datei mailer.c.
Wird benutzt von _normalfunction(), _zap(), catch_tell(), doReadMail(), Forward(), ForwardArea(), get_carbon_copy(), get_note_line(), mailread(), Message2string(), PostNote(), ReadMessage(), schreib(), send_mail(), SendMail() und udp_channel().
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().
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().
1.6.3