diff -c efun.de.orig/abs.de efun.de/abs.de
*** efun.de.orig/abs.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/abs.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int   abs (int arg)
!         float abs (float arg)
  
  BESCHREIBUNG
          Liefert den Betrag des Argumentes <arg>.
--- 1,6 ----
  SYNOPSIS
!         int   abs(int arg)
!         float abs(float arg)
  
  BESCHREIBUNG
          Liefert den Betrag des Argumentes <arg>.
***************
*** 12,18 ****
          abs( 11    )  11
          abs( -1.974)   1.974
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6.
  
  SIEHE AUCH
--- 12,18 ----
          abs( 11    )  11
          abs( -1.974)   1.974
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6.
  
  SIEHE AUCH
diff -c efun.de.orig/acos.de efun.de/acos.de
*** efun.de.orig/acos.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/acos.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 2,8 ****
          float acos(float)
  
  BESCHREIBUNG
!         Liefert der Arkuskosinus des Argumentes.
  
  SIEHE AUCH
          sin(E), asin(E), cos(E), tan(E), atan(E), atan2(E)
--- 2,8 ----
          float acos(float)
  
  BESCHREIBUNG
!         Liefert den Arkuskosinus des Argumentes.
  
  SIEHE AUCH
          sin(E), asin(E), cos(E), tan(E), atan(E), atan2(E)
diff -c efun.de.orig/add_action.de efun.de/add_action.de
*** efun.de.orig/add_action.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/add_action.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         #include <sys/commands.h>
  
!         void add_action(string fun, string cmd);
!         void add_action(string fun, string cmd, int flag);
!         void add_action(string fun);        /* veraltet */
  
  BESCHREIBUNG
          Setzt eine lokale Funktion fun, die aufgerufen wird, wenn der Spieler
--- 1,9 ----
  SYNOPSIS
!         #include <commands.h>
  
!         void add_action(string fun, string cmd)
!         void add_action(string fun, string cmd, int flag)
!         void add_action(string fun)        /* veraltet */
  
  BESCHREIBUNG
          Setzt eine lokale Funktion fun, die aufgerufen wird, wenn der Spieler
***************
*** 32,41 ****
          der Umgebung des Spielers befinden; also entweder der Spieler selbst,
          im Inventar des Spielers, der Raum, in dem sich der Spieler befindet
          oder ein Objekt im gleichen Raum wie der Spieler. Wenn der Spieler
!         die Umgebung des Objekts verlaesst, werden alle von add_action
!         definierten Kommandi automatisch entfernt.
  
!         Die Kommandi lassen sich auch manuell entfernen. Die Efun dazu lautet
          remove_actions().
  
          Wenn das Argument <flag> AA_SHORT (d.h. 1) ist, koennen Argumente von
--- 32,41 ----
          der Umgebung des Spielers befinden; also entweder der Spieler selbst,
          im Inventar des Spielers, der Raum, in dem sich der Spieler befindet
          oder ein Objekt im gleichen Raum wie der Spieler. Wenn der Spieler
!         die Umgebung des Objekts verlaesst, werden alle von add_action()
!         definierten Kommandos automatisch entfernt.
  
!         Die Kommandos lassen sich auch manuell entfernen. Die Efun dazu lautet
          remove_actions().
  
          Wenn das Argument <flag> AA_SHORT (d.h. 1) ist, koennen Argumente von
***************
*** 79,85 ****
          add_action("fun", "ncmd", AA_NOSPACE);
          add_action("fun", "icmd", AA_IMM_ARGS);
  
!         Die folgende Tabelle zeigt, was die oben aufgefuehrten Kommandi bzw.
          <flag> fuer Werte an query_verb() und als Argumente an die Funktion
          fun uebergeben:
  
--- 79,85 ----
          add_action("fun", "ncmd", AA_NOSPACE);
          add_action("fun", "icmd", AA_IMM_ARGS);
  
!         Die folgende Tabelle zeigt, was die oben aufgefuehrten Kommandos bzw.
          <flag> fuer Werte an query_verb() und als Argumente an die Funktion
          fun uebergeben:
  
***************
*** 108,114 ****
          | "icmdbla fasel"   | "icmd"       | "bla fasel"                |
          |-------------------|--------------|----------------------------|
  
! AENDERUNGEN
          Das Argument <flag> < 0 wird seit 3.2@127 unterstuetzt, aber erst ab
          LDMud 3.2.8 richtig implementiert. LDMud 3.2.9 fuehrte das AA_IMM_ARGS
          Flag ein.
--- 108,114 ----
          | "icmdbla fasel"   | "icmd"       | "bla fasel"                |
          |-------------------|--------------|----------------------------|
  
! GESCHICHTE
          Das Argument <flag> < 0 wird seit 3.2@127 unterstuetzt, aber erst ab
          LDMud 3.2.8 richtig implementiert. LDMud 3.2.9 fuehrte das AA_IMM_ARGS
          Flag ein.
diff -c efun.de.orig/add_verb.de efun.de/add_verb.de
*** efun.de.orig/add_verb.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/add_verb.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  VERALTET
  SYNOPSIS
!         void add_verb(string str);
  
  BESCHREIBUNG
          Diese Funktion haengt mit add_action() zusammen. add_verb setzt ein
--- 1,6 ----
  VERALTET
  SYNOPSIS
!         void add_verb(string str)
  
  BESCHREIBUNG
          Diese Funktion haengt mit add_action() zusammen. add_verb setzt ein
diff -c efun.de.orig/add_xverb.de efun.de/add_xverb.de
*** efun.de.orig/add_xverb.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/add_xverb.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  VERALTET
  SYNOPSIS
!     void add_xverb(string str);
  
  BESCHREIBUNG
          Diese Funktion gehoert zu den add_action() Funktionen. Sie setzt ein
--- 1,6 ----
  VERALTET
  SYNOPSIS
!     void add_xverb(string str)
  
  BESCHREIBUNG
          Diese Funktion gehoert zu den add_action() Funktionen. Sie setzt ein
diff -c efun.de.orig/all_environment.de efun.de/all_environment.de
*** efun.de.orig/all_environment.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/all_environment.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object *all_environment();
!         object *all_environment(object ob);
  
  BESCHREIBUNG
          Gibt ein Array mit allen Umgebungen des Objekts <ob> zurueck.
--- 1,6 ----
  SYNOPSIS
!         object * all_environment()
!         object * all_environment(object ob)
  
  BESCHREIBUNG
          Gibt ein Array mit allen Umgebungen des Objekts <ob> zurueck.
***************
*** 10,22 ****
          Wenn <o> keine Umgebung hat oder zerstoert wurde, wird 0 zurueck
          gegeben.
  
! BEISPIEL
          Wenn <ob> ein Zuendholz in einer Schachtel in einer Truhe in einem
          Raum ist, so liefert all_environment(ob) das Array
          ({ Schachtel, Truhe, Raum }) zurueck.
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.6. Ein Vorschlag von TubMud.
  
  SIEHE AUCH
          environment(E), all_inventory(E)
--- 10,22 ----
          Wenn <o> keine Umgebung hat oder zerstoert wurde, wird 0 zurueck
          gegeben.
  
! BEISPIELE
          Wenn <ob> ein Zuendholz in einer Schachtel in einer Truhe in einem
          Raum ist, so liefert all_environment(ob) das Array
          ({ Schachtel, Truhe, Raum }) zurueck.
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.6. Ein Vorschlag von Tubmud.
  
  SIEHE AUCH
          environment(E), all_inventory(E)
diff -c efun.de.orig/all_inventory.de efun.de/all_inventory.de
*** efun.de.orig/all_inventory.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/all_inventory.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object *all_inventory()
!         object *all_inventory(object ob)
  
  BESCHREIBUNG
          Liefert ein Feld (Array) mit allen Objekten, die sich im Objekt ob
--- 1,6 ----
  SYNOPSIS
!         object * all_inventory()
!         object * all_inventory(object ob)
  
  BESCHREIBUNG
          Liefert ein Feld (Array) mit allen Objekten, die sich im Objekt ob
diff -c efun.de.orig/allocate.de efun.de/allocate.de
*** efun.de.orig/allocate.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/allocate.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         *mixed allocate(int size);
!         *mixed allocate(int size, mixed init_value);
  
!         *mixed allocate(*int sizes);
!         *mixed allocate(*int sizes, mixed init_value);
  
  BESCHREIBUNG
!         Alloziert ein Array von <size> Elementen. Die Anzahl Elemente muss
          groesser sein als 0, darf aber das Systemmaximum (normalerweise 1000)
          nicht uebersteigen. Wird <init_value> angegeben, wird allen Elementen
          dieser als Anfangswert zugewiesen. Wenn <init_value> ein Mapping oder
--- 1,12 ----
  SYNOPSIS
!         mixed * allocate(int size)
!         mixed * allocate(int size, mixed init_value)
  
!         mixed * allocate(*int sizes)
!         mixed * allocate(*int sizes, mixed init_value)
  
  BESCHREIBUNG
!         Allokiert ein Array von <size> Elementen. Die Anzahl Elemente muss
          groesser sein als 0, darf aber das Systemmaximum (normalerweise 1000)
          nicht uebersteigen. Wird <init_value> angegeben, wird allen Elementen
          dieser als Anfangswert zugewiesen. Wenn <init_value> ein Mapping oder
***************
*** 18,28 ****
          Arrays.
  
          Heute wird allocate() kaum mehr benoetigt, weil Arrays mit dem
!         +-Operator addiert werden koennen und mit dem ({})-Operator
!         initialisiert. Der einzige Nutzen der Funktion ist, grosse leere
          oder initialisierte Arrays zu erzeugen.
  
! BEISPIEL
          string *buffer;
          buffer = allocate(50);
          buffer = allocate(50, "");
--- 18,28 ----
          Arrays.
  
          Heute wird allocate() kaum mehr benoetigt, weil Arrays mit dem
!         +-Operator addiert und mit dem ({})-Operator initialisiert werden
!         koennen. Der einzige Nutzen der Funktion ist, grosse leere
          oder initialisierte Arrays zu erzeugen.
  
! BEISPIELE
          string *buffer;
          buffer = allocate(50);
          buffer = allocate(50, "");
***************
*** 30,36 ****
          buffer = allocate( ({ 2, 3 }) )
            --> ({ ({ 0, 0, 0 }), ({ 0, 0, 0 }) })
  
! AENDERUNGEN
          LDMud 3.2.9 fuehrte den Anfangswert <init_value> und die
              Initialisierung von mehrdimensionalen Arrays ein.
  
--- 30,36 ----
          buffer = allocate( ({ 2, 3 }) )
            --> ({ ({ 0, 0, 0 }), ({ 0, 0, 0 }) })
  
! GESCHICHTE
          LDMud 3.2.9 fuehrte den Anfangswert <init_value> und die
              Initialisierung von mehrdimensionalen Arrays ein.
  
diff -c efun.de.orig/allocate_mapping.de efun.de/allocate_mapping.de
*** efun.de.orig/allocate_mapping.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/allocate_mapping.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  VERALTET
  SYNOPSIS
!         mapping allocate_mapping(int size, int width);
  
  BESCHREIBUNG
          Reserviert Speicherplatz fuer ein Mapping.
--- 1,6 ----
  VERALTET
  SYNOPSIS
!         mapping allocate_mapping(int size, int width)
  
  BESCHREIBUNG
          Reserviert Speicherplatz fuer ein Mapping.
***************
*** 19,25 ****
          bestimmten Groesse zu erzeugen, dem aber im Moment der Erzeugung
          noch keine Daten zu den Keys zugewiesen werden.
  
! AENDERUNGEN
          Umbenannt zu m_allocate() in LDMud 3.2.6.
          Seit 3.2.9 ist die Funktion nicht mehr verfuegbar, wenn der Treiber
              nicht mit USE_DEPRECATED kompiliert wurde.
--- 19,25 ----
          bestimmten Groesse zu erzeugen, dem aber im Moment der Erzeugung
          noch keine Daten zu den Keys zugewiesen werden.
  
! GESCHICHTE
          Umbenannt zu m_allocate() in LDMud 3.2.6.
          Seit 3.2.9 ist die Funktion nicht mehr verfuegbar, wenn der Treiber
              nicht mit USE_DEPRECATED kompiliert wurde.
diff -c efun.de.orig/and_bits.de efun.de/and_bits.de
*** efun.de.orig/and_bits.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/and_bits.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string and_bits(string str1, string str2);
  
  BESCHREIBUNG
          <str1> und <str2> seien beides Bitstrings. Das Resultat von and_bits()
--- 1,5 ----
  SYNOPSIS
!         string and_bits(string str1, string str2)
  
  BESCHREIBUNG
          <str1> und <str2> seien beides Bitstrings. Das Resultat von and_bits()
***************
*** 7,13 ****
          heisst ein String, in dem ein Bit nur gesetzt ist, wenn das
          entsprechende Bit in beiden Strings <str1> und <str2> gesetzt ist.
  
! BEISPIEL
          string s1, s2, s3;
  
          s1 = set_bit("", 3); s1 = set_bit(s1, 15);  -> s1 is "( ("
--- 7,13 ----
          heisst ein String, in dem ein Bit nur gesetzt ist, wenn das
          entsprechende Bit in beiden Strings <str1> und <str2> gesetzt ist.
  
! BEISPIELE
          string s1, s2, s3;
  
          s1 = set_bit("", 3); s1 = set_bit(s1, 15);  -> s1 is "( ("
diff -c efun.de.orig/apply.de efun.de/apply.de
*** efun.de.orig/apply.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/apply.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed apply(closure cl, mixed arg, ...);
  
  BESCHREIBUNG
          Wertet die Closure <cl> aus. Wenn <cl> keine Closure ist, wird <cl>
--- 1,5 ----
  SYNOPSIS
!         mixed apply(closure cl, mixed arg, ...)
  
  BESCHREIBUNG
          Wertet die Closure <cl> aus. Wenn <cl> keine Closure ist, wird <cl>
***************
*** 26,32 ****
          Eine wichtige Anwendung von apply() ist das Auswerten des
          Array-Arguments in "varargs" Funktionen.
  
! AENDERUNGEN
          Eingefuehrt in 3.2@70.
          LDMud 3.2.8 fuehrte ein, dass das erste Argument zurueck gegeben wird,
              wenn es sich nicht um eine Closure handelt.
--- 26,32 ----
          Eine wichtige Anwendung von apply() ist das Auswerten des
          Array-Arguments in "varargs" Funktionen.
  
! GESCHICHTE
          Eingefuehrt in 3.2@70.
          LDMud 3.2.8 fuehrte ein, dass das erste Argument zurueck gegeben wird,
              wenn es sich nicht um eine Closure handelt.
diff -c efun.de.orig/asin.de efun.de/asin.de
*** efun.de.orig/asin.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/asin.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 2,8 ****
          float asin(float)
  
  BESCHREIBUNG
!         Liefert der Arkussinus des Argumentes.
  
  SIEHE AUCH
          sin(E), cos(E), acos(E), tan(E), atan(E), atan2(E)
--- 2,8 ----
          float asin(float)
  
  BESCHREIBUNG
!         Liefert den Arkussinus des Argumentes.
  
  SIEHE AUCH
          sin(E), cos(E), acos(E), tan(E), atan(E), atan2(E)
diff -c efun.de.orig/assoc.de efun.de/assoc.de
*** efun.de.orig/assoc.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/assoc.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,8 ****
  OPTIONAL, VERALTET
  SYNOPSIS
!         int   assoc(mixed key, mixed *keys);
!         mixed assoc(mixed key, mixed *alist [, mixed fail]);
!         mixed assoc(mixed key, mixed *keys, mixed *data [, mixed fail]);
  
  BESCHREIBUNG
          Alle drei Aufrufe suchen nach einem <key> in einem <alist> (einem
--- 1,8 ----
  OPTIONAL, VERALTET
  SYNOPSIS
!         int   assoc(mixed key, mixed *keys)
!         mixed assoc(mixed key, mixed *alist [, mixed fail])
!         mixed assoc(mixed key, mixed *keys, mixed *data [, mixed fail])
  
  BESCHREIBUNG
          Alle drei Aufrufe suchen nach einem <key> in einem <alist> (einem
***************
*** 10,16 ****
          Array <keys>. Der Versuch, in einem anderen Konstrukt zu suchen,
          fuehrt zu einem unvorhersehbaren Ergebnis.
  
!         Komplexitaet: O( lg(n) ), wobei <n> die Anzahl Keys ist.
  
          1.  Form: Key-Suche
              <key> wird im Array <keys> gesucht. Das Resultat ist der Index,
--- 10,16 ----
          Array <keys>. Der Versuch, in einem anderen Konstrukt zu suchen,
          fuehrt zu einem unvorhersehbaren Ergebnis.
  
!         Komplexitaet: O(lg(n)), wobei <n> die Anzahl Keys ist.
  
          1.  Form: Key-Suche
              <key> wird im Array <keys> gesucht. Das Resultat ist der Index,
diff -c efun.de.orig/atan2.de efun.de/atan2.de
*** efun.de.orig/atan2.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/atan2.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         float atan2 (int|float y, int|float x)
  
  BESCHREIBUNG
          Liefert den Winkel der Polarkoordinaten des Punktes (x, y) im
--- 1,5 ----
  SYNOPSIS
!         float atan2(int|float y, int|float x)
  
  BESCHREIBUNG
          Liefert den Winkel der Polarkoordinaten des Punktes (x, y) im
***************
*** 9,15 ****
          Parameter-Liste, die die Abfolge in der Steigungs-Winkel-Umrechnung
          atan(y / x) widerspiegelt.
  
! AENDERUNGEN
          LDMud 3.2.9: Ganzzahlen (Integers) als Argumente hinzugefuegt.
  
  SIEHE AUCH
--- 9,15 ----
          Parameter-Liste, die die Abfolge in der Steigungs-Winkel-Umrechnung
          atan(y / x) widerspiegelt.
  
! GESCHICHTE
          LDMud 3.2.9: Ganzzahlen (Integers) als Argumente hinzugefuegt.
  
  SIEHE AUCH
diff -c efun.de.orig/atan.de efun.de/atan.de
*** efun.de.orig/atan.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/atan.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 4,10 ****
  BESCHREIBUNG
          Liefert den Arkustangens des Argumentes.
  
! AENDERUNGEN
          LDMud 3.2.9: Ganzzahlen (Integers) als Argument hinzugefuegt.
  
  SIEHE AUCH
--- 4,10 ----
  BESCHREIBUNG
          Liefert den Arkustangens des Argumentes.
  
! GESCHICHTE
          LDMud 3.2.9: Ganzzahlen (Integers) als Argument hinzugefuegt.
  
  SIEHE AUCH
diff -c efun.de.orig/attach_erq_demon.de efun.de/attach_erq_demon.de
*** efun.de.orig/attach_erq_demon.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/attach_erq_demon.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT
  SYNOPSIS
!         int attach_erq_demon(object ob, int do_close);
!         int attach_erq_demon(string obname, int do_close);
  
  BESCHREIBUNG
          Diese geschuetzte Funktion setzt oder aendert die die Verbindung des
--- 1,7 ----
  GESCHUETZT
  SYNOPSIS
!         int attach_erq_demon(object ob, int do_close)
!         int attach_erq_demon(string obname, int do_close)
  
  BESCHREIBUNG
          Diese geschuetzte Funktion setzt oder aendert die die Verbindung des
***************
*** 25,36 ****
  
          Die Efun liefert 1 bei Erfolg, 0 sonst.
  
! BEISPIEL
!         Um den (Standard-) Erq neu zu starten, muss in
          master.c::stale_erq(closure c) geschrieben werden:
          attach_erq_demon("", 0);
  
! AENDERUNGEN
          Eingefuehrt in 3.2.1@61.
  
  SIEHE AUCH
--- 25,36 ----
  
          Die Efun liefert 1 bei Erfolg, 0 sonst.
  
! BEISPIELE
!         Um den (Standard-)Erq neu zu starten, muss in
          master.c::stale_erq(closure c) geschrieben werden:
          attach_erq_demon("", 0);
  
! GESCHICHTE
          Eingefuehrt in 3.2.1@61.
  
  SIEHE AUCH
diff -c efun.de.orig/binary_message.de efun.de/binary_message.de
*** efun.de.orig/binary_message.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/binary_message.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         int binary_message(int *|string messages, int flags);
  
  BESCHREIBUNG
          Liest den Output aus und sendet diesen direkt mit write() OHNE IAC
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         int binary_message(int *|string messages, int flags)
  
  BESCHREIBUNG
          Liest den Output aus und sendet diesen direkt mit write() OHNE IAC
***************
*** 26,35 ****
              Die Idee hinter den Flags ist, dass das Senden von Kommandocodes
              zum Beispiel fuer Farben an den vorhandenen Filtern fuer erlaubte
              Zeichen vorbeigeschleust werden muss, jedoch nicht wichtig genug
!             ist, um die Verschweundung von Bandbreite mittels einer
              synchronen Uebertragung zu rechtfertigen.
  
! AENDERUNGEN
          Eingefuehrt in 3.2.1@40.
  
  SIEHE AUCH
--- 26,35 ----
              Die Idee hinter den Flags ist, dass das Senden von Kommandocodes
              zum Beispiel fuer Farben an den vorhandenen Filtern fuer erlaubte
              Zeichen vorbeigeschleust werden muss, jedoch nicht wichtig genug
!             ist, um die Verschwendung von Bandbreite mittels einer
              synchronen Uebertragung zu rechtfertigen.
  
! GESCHICHTE
          Eingefuehrt in 3.2.1@40.
  
  SIEHE AUCH
diff -c efun.de.orig/bind_lambda.de efun.de/bind_lambda.de
*** efun.de.orig/bind_lambda.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/bind_lambda.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         closure bind_lambda(closure cl, object ob);
  
  BESCHREIBUNG
          Bindet eine ungebundene Lambda-Closure (die von unbound_lambda()
--- 1,5 ----
  SYNOPSIS
!         closure bind_lambda(closure cl, object ob)
  
  BESCHREIBUNG
          Bindet eine ungebundene Lambda-Closure (die von unbound_lambda()
***************
*** 11,18 ****
          uebereinstimmt, wird eine Schutzverletzung ("bind_lambda",
          this_object(), ob) verursacht.
  
! AENDERUNGEN
!         Eingefuehrt in 3.2.@82.
  
  SIEHE AUCH
          lambda(E), unbound_lambda(E), apply(E), funcall(E), closures(LPC)
--- 11,18 ----
          uebereinstimmt, wird eine Schutzverletzung ("bind_lambda",
          this_object(), ob) verursacht.
  
! GESCHICHTE
!         Eingefuehrt in 3.2.1@82.
  
  SIEHE AUCH
          lambda(E), unbound_lambda(E), apply(E), funcall(E), closures(LPC)
diff -c efun.de.orig/blueprint.de efun.de/blueprint.de
*** efun.de.orig/blueprint.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/blueprint.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,7 ****
  VORLAEUFIG
  SYNOPSIS
          object blueprint()
!         object blueprint(string|object ob);
  
  BESCHREIBUNG
          Die Efun liefert den Blueprint fuer das angegeben Objekt <ob> oder
--- 1,7 ----
  VORLAEUFIG
  SYNOPSIS
          object blueprint()
!         object blueprint(string|object ob)
  
  BESCHREIBUNG
          Die Efun liefert den Blueprint fuer das angegeben Objekt <ob> oder
***************
*** 11,22 ****
          Objekte mit replace_program() liefert die Funktion den Blueprint des
          ersetzenden Programs.
  
! BEISPIEL
          blueprint("/obj/ding");                 -> liefert /obj/ding
          blueprint(find_object("/obj/ding"));    -> liefert /obj/ding
          blueprint(clone_object("/obj/ding"));   -> liefert /obj/ding
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
--- 11,22 ----
          Objekte mit replace_program() liefert die Funktion den Blueprint des
          ersetzenden Programs.
  
! BEISPIELE
          blueprint("/obj/ding");                 -> liefert /obj/ding
          blueprint(find_object("/obj/ding"));    -> liefert /obj/ding
          blueprint(clone_object("/obj/ding"));   -> liefert /obj/ding
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
diff -c efun.de.orig/break_point.de efun.de/break_point.de
*** efun.de.orig/break_point.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/break_point.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL, GESCHUETZT
  SYNOPSIS
!         void break_point();
  
  BESCHREIBUNG
          Diese Funktion ist fuer interne Benutzung und sollte niemals von einem
--- 1,6 ----
  OPTIONAL, GESCHUETZT
  SYNOPSIS
!         void break_point()
  
  BESCHREIBUNG
          Diese Funktion ist fuer interne Benutzung und sollte niemals von einem
diff -c efun.de.orig/caller_stack.de efun.de/caller_stack.de
*** efun.de.orig/caller_stack.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/caller_stack.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         *object caller_stack();
!         *object caller_stack(int add_interactive);
  
  BESCHREIBUNG
          Liefert ein Array der previous_object(), die einen call_other() auf
--- 1,6 ----
  SYNOPSIS
!         object * caller_stack()
!         object * caller_stack(int add_interactive)
  
  BESCHREIBUNG
          Liefert ein Array der previous_object(), die einen call_other() auf
***************
*** 11,17 ****
          wird this_interactive() dem Array hinzugefuegt, oder 0, wenn kein
          this_interactive() existiert.
  
! BEISPIEL
          Das interaktive Objekt A gibt ein Kommando ein, das im Objekt B eine
          Funktion aufruft, die auf das Objekt C verweist, welches wiederum
          eine Funktion im Objekt D aufruft.
--- 11,17 ----
          wird this_interactive() dem Array hinzugefuegt, oder 0, wenn kein
          this_interactive() existiert.
  
! BEISPIELE
          Das interaktive Objekt A gibt ein Kommando ein, das im Objekt B eine
          Funktion aufruft, die auf das Objekt C verweist, welches wiederum
          eine Funktion im Objekt D aufruft.
***************
*** 19,33 ****
          Wenn D nun caller_stack() aufruft, ergibt dies: ({C,B}).
          Fuer caller_stack(1) ergibt die Funktion: ({C,B,A}).
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.6, vorgeschlagen von TubMud.
! 
! ANMERKUNG
          Aufrufe von "alien lfun closures" (vergleiche symbol_function())
          erzeugen zwei Eintraege im Stack, wenn das gebundene Objekt sich vom
          Objekt der Closure unterscheidet: der erste Eintrag steht fuer das
          gebundene Objekt, der zweite fuer das Closure-Objekt.
  
  SIEHE AUCH
          caller_stack_depth(E), previous_object(E), this_interactive(E),
          call_other(E)
--- 19,33 ----
          Wenn D nun caller_stack() aufruft, ergibt dies: ({C,B}).
          Fuer caller_stack(1) ergibt die Funktion: ({C,B,A}).
  
! ANMERKUNGEN
          Aufrufe von "alien lfun closures" (vergleiche symbol_function())
          erzeugen zwei Eintraege im Stack, wenn das gebundene Objekt sich vom
          Objekt der Closure unterscheidet: der erste Eintrag steht fuer das
          gebundene Objekt, der zweite fuer das Closure-Objekt.
  
+ GESCHICHTE
+         Eingefuehrt in LDMud 3.2.6, vorgeschlagen von Tubmud.
+ 
  SIEHE AUCH
          caller_stack_depth(E), previous_object(E), this_interactive(E),
          call_other(E)
diff -c efun.de.orig/caller_stack_depth.de efun.de/caller_stack_depth.de
*** efun.de.orig/caller_stack_depth.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/caller_stack_depth.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int caller_stack_depth();
  
  BESCHREIBUNG
          Liefert die Anzahl previous_object()s im Caller Stack. Dies kann fuer
--- 1,5 ----
  SYNOPSIS
!         int caller_stack_depth()
  
  BESCHREIBUNG
          Liefert die Anzahl previous_object()s im Caller Stack. Dies kann fuer
diff -c efun.de.orig/call_other.de efun.de/call_other.de
*** efun.de.orig/call_other.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/call_other.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,10 ****
  SYNOPSIS
!         unknown call_other(object ob, string fun, mixed arg, ...);
!         unknown call_other(object *ob, string fun, mixed arg, ...);
  
!         ob->fun(mixed arg, ...);
!         ob->"fun"(mixed arg, ...);
!         ob->(fun)(mixed arg, ...);
  
  BESCHREIBUNG
          Ruft die in einem anderen Objekt <ob> die Funktion <fun> mit den
--- 1,10 ----
  SYNOPSIS
!         unknown call_other(object ob, string fun, mixed arg, ...)
!         unknown call_other(object *ob, string fun, mixed arg, ...)
  
!         ob->fun(mixed arg, ...)
!         ob->"fun"(mixed arg, ...)
!         ob->(fun)(mixed arg, ...)
  
  BESCHREIBUNG
          Ruft die in einem anderen Objekt <ob> die Funktion <fun> mit den
***************
*** 70,76 ****
          Benutzern auf und speichert das gesammelte Resultat in einer
          Variablen:
  
!             string * s;
              s = (string *)users()->short();
              !Compat: call_other("/users/luser/thing", "???", 0);
              Compat: call_other("users/luser/thing", "???", 0);
--- 70,76 ----
          Benutzern auf und speichert das gesammelte Resultat in einer
          Variablen:
  
!             string *s;
              s = (string *)users()->short();
              !Compat: call_other("/users/luser/thing", "???", 0);
              Compat: call_other("users/luser/thing", "???", 0);
***************
*** 80,86 ****
          "???" im Objekt aufgerufen. Gluecklicherweise gibt es heute zu
          diesem Zweck die Efun load_object().
  
! AENDERUNGEN
          In LDMud 3.2.8 wurden die folgenden Verbesserungen eingefuehrt:
            - die Formen x->"y"() und x->(y)() werden erkannt;
            - die Form x->y() kollidiert nicht mehr mit einer lokalen Variablen,
--- 80,86 ----
          "???" im Objekt aufgerufen. Gluecklicherweise gibt es heute zu
          diesem Zweck die Efun load_object().
  
! GESCHICHTE
          In LDMud 3.2.8 wurden die folgenden Verbesserungen eingefuehrt:
            - die Formen x->"y"() und x->(y)() werden erkannt;
            - die Form x->y() kollidiert nicht mehr mit einer lokalen Variablen,
***************
*** 88,93 ****
--- 88,94 ----
            - eine simul_efun call_other() erwischt auch Aufrufe der Form ->().
            - call_other kann auch auf Arrays von Objekten angewandt werden.
          LDMud 3.2.10 machte den Aufruf von Objektarrays konfigurierbar.
+         LDMud 3.3.113 fuehrte den Hook H_DEFAULT_METHOD ein.
  
  SIEHE AUCH
          function_exists(E), call_resolved(E), create(A), pragma(LPC),
diff -c efun.de.orig/call_out.de efun.de/call_out.de
*** efun.de.orig/call_out.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/call_out.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         void call_out(string fun, int delay, mixed arg, ...);
!         void call_out(closure cl, int delay, mixed arg, ...);
  
  BESCHREIBUNG
          Ruft zeitverzoegert die Funktion <fun> im aktuellen Objekt oder
--- 1,6 ----
  SYNOPSIS
!         void call_out(string fun, int delay, mixed arg, ...)
!         void call_out(closure cl, int delay, mixed arg, ...)
  
  BESCHREIBUNG
          Ruft zeitverzoegert die Funktion <fun> im aktuellen Objekt oder
diff -c efun.de.orig/call_out_info.de efun.de/call_out_info.de
*** efun.de.orig/call_out_info.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/call_out_info.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed *call_out_info();
  
  BESCHREIBUNG
          Liefert Informationen ueber alle haengigen call_out()s. Das Resultat
--- 1,5 ----
  SYNOPSIS
!         mixed * call_out_info()
  
  BESCHREIBUNG
          Liefert Informationen ueber alle haengigen call_out()s. Das Resultat
diff -c efun.de.orig/call_resolved.de efun.de/call_resolved.de
*** efun.de.orig/call_resolved.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/call_resolved.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int call_resolved(mixed result, object ob, string func, mixed arg,...);
  
  BESCHREIBUNG
          Die Funktion ist aehnlich zu call_other(). Wenn obj->func() definiert
--- 1,5 ----
  SYNOPSIS
!         int call_resolved(mixed result, object ob, string func, mixed arg,...)
  
  BESCHREIBUNG
          Die Funktion ist aehnlich zu call_other(). Wenn obj->func() definiert
diff -c efun.de.orig/capitalize.de efun.de/capitalize.de
*** efun.de.orig/capitalize.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/capitalize.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         string capitalize(string str);
  
  BESCHREIBUNG
          Konvertiert das erste Zeichen des Strings <str> in einen
          Grossbuchtaben und gibt den neuen String zurueck.
  
! BEISPIEL
          capitalize("hallo welt!") -> "Hallo welt!"
  
  SIEHE AUCH
--- 1,11 ----
  SYNOPSIS
!         string capitalize(string str)
  
  BESCHREIBUNG
          Konvertiert das erste Zeichen des Strings <str> in einen
          Grossbuchtaben und gibt den neuen String zurueck.
  
! BEISPIELE
          capitalize("hallo welt!") -> "Hallo welt!"
  
  SIEHE AUCH
diff -c efun.de.orig/catch.de efun.de/catch.de
*** efun.de.orig/catch.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/catch.de	2009-11-02 23:01:24.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         mixed catch(expr, expr, ...);
!         mixed catch(expr, expr, ...; modifiers);
  
  BESCHREIBUNG
          Wertet die Ausdruecke <expr> aus. Wenn kein Fehler auftritt, wird 0
--- 1,6 ----
  SYNOPSIS
!         mixed catch(expr, expr, ...)
!         mixed catch(expr, expr, ...; modifiers)
  
  BESCHREIBUNG
          Wertet die Ausdruecke <expr> aus. Wenn kein Fehler auftritt, wird 0
***************
*** 14,20 ****
  
          Wenn zum Zeitpunkt, zu dem catch() aufgerufen wird, weniger als
          __CATCH_EVAL_COST__ Rechenticks uebrig sind, wird ein Laufzeitfehler
!         RTE erzeugt und es werden keine Ausdruecke <expr> aus catch()
          ausgewertet.
  
          Das Verhalten von catch() kann durch <modifiers> veraendert werden:
--- 14,20 ----
  
          Wenn zum Zeitpunkt, zu dem catch() aufgerufen wird, weniger als
          __CATCH_EVAL_COST__ Rechenticks uebrig sind, wird ein Laufzeitfehler
!         (RTE) erzeugt und es werden keine Ausdruecke <expr> aus catch()
          ausgewertet.
  
          Das Verhalten von catch() kann durch <modifiers> veraendert werden:
***************
*** 27,42 ****
                          diesem <modifier> wird runtime_error() trotzdem
                          aufgerufen.
  
!         Catch ist nicht im eigentlichen Sinne eine Efun, sondern eine Compiler
!         Anweisung.
  
! BEISPIEL
          object obj;
          string err;
!         if(err = catch(obj = clone_object("/foo/bar/baz")))
              write("Kann das Objekt nicht clonen. Grund: "+err+"\n");
  
! AENDERUNGEN
          LDMud 3.2.9 fuehrte den 'nolog' catch() als experimentelles Feature
              ein.
          LDMud 3.2.10 implementierte 'nolog' als offizielle Form und fuehrte
--- 27,42 ----
                          diesem <modifier> wird runtime_error() trotzdem
                          aufgerufen.
  
!         Catch ist nicht im eigentlichen Sinne eine Efun, sondern eine
!         Compileranweisung.
  
! BEISPIELE
          object obj;
          string err;
!         if (err = catch(obj = clone_object("/foo/bar/baz")))
              write("Kann das Objekt nicht clonen. Grund: "+err+"\n");
  
! GESCHICHTE
          LDMud 3.2.9 fuehrte den 'nolog' catch() als experimentelles Feature
              ein.
          LDMud 3.2.10 implementierte 'nolog' als offizielle Form und fuehrte
diff -c efun.de.orig/cat.de efun.de/cat.de
*** efun.de.orig/cat.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/cat.de	2009-11-02 23:02:41.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int cat(string path, int start, int num);
  
  BESCHREIBUNG
          Listet die Datei, die unter <path> gefunden wird.
--- 1,5 ----
  SYNOPSIS
!         int cat(string path, int start, int num)
  
  BESCHREIBUNG
          Listet die Datei, die unter <path> gefunden wird.
***************
*** 15,26 ****
          Die totale Anzahl Zeilen ist durch ein Systemlimit beschraenkt, das
          normalerweise bei 50 Zeilen liegt.
  
!         cat() liefert die Anzahl ausgegebener Zeilen bei Erfolg, 0 wenn
!         <pfad> nicht gefunden werden kann oder keine Zeilen ausgegeben
!         werden koennen (weil <start> z.B. groesser ist als die Laenge der
          Datei).
! 
! BEISPIEL
          cat("/doc/efun/cat", 5, 9);
  
          Das gibt die Datei "/doc/efun/cat" aus, beginnend mit Zeile 5 bis und
--- 15,26 ----
          Die totale Anzahl Zeilen ist durch ein Systemlimit beschraenkt, das
          normalerweise bei 50 Zeilen liegt.
  
!         cat() liefert die Anzahl ausgegebener Zeilen bei Erfolg oder 0,
!         wenn <pfad> nicht gefunden werden kann oder keine Zeilen ausgegeben
!         werden koennen (weil z.B. <start> groesser ist als die Laenge der
          Datei).
!   
! BEISPIELE
          cat("/doc/efun/cat", 5, 9);
  
          Das gibt die Datei "/doc/efun/cat" aus, beginnend mit Zeile 5 bis und
diff -c efun.de.orig/ceil.de efun.de/ceil.de
*** efun.de.orig/ceil.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/ceil.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,17 ****
  SYNOPSIS
!         float ceil(int|float arg);
  
  BESCHREIBUNG
          Rundet <arg> zur naechsten ganzen Zahl auf und liefert das Resultat
          zurueck. Wenn <arg> ein Integer ist, wird das Resultat in float
          konvertiert.
  
! BEISPIEL
          ceil(4.5);      ergibt:  5.0
          ceil(-4.5);     ergibt: -4.0
          ceil(5);        ergibt:  5.0
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
          LDMud 3.2.9 fuehrte neu Integer als moegliche Argumente ein.
  
--- 1,17 ----
  SYNOPSIS
!         float ceil(int|float arg)
  
  BESCHREIBUNG
          Rundet <arg> zur naechsten ganzen Zahl auf und liefert das Resultat
          zurueck. Wenn <arg> ein Integer ist, wird das Resultat in float
          konvertiert.
  
! BEISPIELE
          ceil(4.5);      ergibt:  5.0
          ceil(-4.5);     ergibt: -4.0
          ceil(5);        ergibt:  5.0
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
          LDMud 3.2.9 fuehrte neu Integer als moegliche Argumente ein.
  
diff -c efun.de.orig/clear_bit.de efun.de/clear_bit.de
*** efun.de.orig/clear_bit.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/clear_bit.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string clear_bit(string str, int n);
  
  BESCHREIBUNG
          Gibt einen neuen String zurueck, in dem das n-te Bit im String <str>
--- 1,5 ----
  SYNOPSIS
!         string clear_bit(string str, int n)
  
  BESCHREIBUNG
          Gibt einen neuen String zurueck, in dem das n-te Bit im String <str>
diff -c efun.de.orig/clone_object.de efun.de/clone_object.de
*** efun.de.orig/clone_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/clone_object.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object clone_object(string name);
!         object clone_object(object template);
  
  BESCHREIBUNG
          Clont ein neues Objekt aus der Definiton <name> oder alternativ aus
--- 1,6 ----
  SYNOPSIS
!         object clone_object(string name)
!         object clone_object(object template)
  
  BESCHREIBUNG
          Clont ein neues Objekt aus der Definiton <name> oder alternativ aus
***************
*** 72,78 ****
          }
  
  
! AENDERUNGEN
          Modifiziert in LDMud 3.2.6: es werden auch Objekte als Argument
              akzeptiert.
  
--- 72,78 ----
          }
  
  
! GESCHICHTE
          Modifiziert in LDMud 3.2.6: es werden auch Objekte als Argument
              akzeptiert.
  
diff -c efun.de.orig/clonep.de efun.de/clonep.de
*** efun.de.orig/clonep.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/clonep.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,18 ****
  SYNOPSIS
!         int clonep ()
!         int clonep (object obj)
!         int clonep (string obj)
!         int clonep (mixed  arg)
  
  BESCHREIBUNG
          Liefert 1, wenn das angegebene Objekt ein Klon ist, ansonsten 0.
          Das Objekt kann dabei auch durch seinen Objekt-Namen angegeben werden.
          Wird kein Argument uebergeben, so wird this_object() getestet.
!         Liefert 0, wenn das Argument von einem anderen Typ.
          Ein Objekt, dessen Programm mittels replace_program() ersetzt wurde,
          zaehlt nicht als Klon.
  
! BEISPIEL
          object o;
          o = clone_object("/obj/ding");
          write(clonep(o));                          --> schreibt "1"
--- 1,18 ----
  SYNOPSIS
!         int clonep()
!         int clonep(object obj)
!         int clonep(string obj)
!         int clonep(mixed  arg)
  
  BESCHREIBUNG
          Liefert 1, wenn das angegebene Objekt ein Klon ist, ansonsten 0.
          Das Objekt kann dabei auch durch seinen Objekt-Namen angegeben werden.
          Wird kein Argument uebergeben, so wird this_object() getestet.
!         Liefert 0, wenn das Argument von einem anderen Typ ist.
          Ein Objekt, dessen Programm mittels replace_program() ersetzt wurde,
          zaehlt nicht als Klon.
  
! BEISPIELE
          object o;
          o = clone_object("/obj/ding");
          write(clonep(o));                          --> schreibt "1"
***************
*** 20,26 ****
  
          (Im COMPAT_MODE "obj/ding" als Dateinahmen benutzen)
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6, geaendert in 3.2.7, so dass Objekte mit
          ersetzten Programmen nicht mehr als Klone zaehlen.
  
--- 20,26 ----
  
          (Im COMPAT_MODE "obj/ding" als Dateinahmen benutzen)
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6, geaendert in 3.2.7, so dass Objekte mit
          ersetzten Programmen nicht mehr als Klone zaehlen.
  
diff -c efun.de.orig/clones.de efun.de/clones.de
*** efun.de.orig/clones.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/clones.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         *object clones();
!         *object clones(int what);
!         *object clones(string|object obj [, int what]);
  
  BESCHREIBUNG
          Diese Efun liefert ein Array mit allen Clones eines bestimmten
--- 1,7 ----
  SYNOPSIS
!         object * clones()
!         object * clones(int what)
!         object * clones(string|object obj [, int what])
  
  BESCHREIBUNG
          Diese Efun liefert ein Array mit allen Clones eines bestimmten
***************
*** 22,30 ****
          Wenn der Treiber mit DYNAMIC_COSTS kompiliert wurde, sind die Kosten
          fuer diese Funktion proportional zur Anzahl Objekte im Spiel.
  
! BEISPIEL
          object o, p;
!         o = clone_object("/std/thing"); /* oder "std/thing" im COMPAT_MODE */
          destruct(find_object("/std/thing"));
          p = clone_object("/std/thing");
  
--- 22,30 ----
          Wenn der Treiber mit DYNAMIC_COSTS kompiliert wurde, sind die Kosten
          fuer diese Funktion proportional zur Anzahl Objekte im Spiel.
  
! BEISPIELE
          object o, p;
!         o = clone_object("/std/thing"); /* oder "std/thing" im COMPAT-Modus */
          destruct(find_object("/std/thing"));
          p = clone_object("/std/thing");
  
***************
*** 33,38 ****
          clones("/std/thing", 1) --> ergibt ({ o })
          clones("/std/thing", 2) --> ergibt ({ o, p })
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.8.
          LDMud 3.2.9 fuehrte die dynamischen Kosten ein.
--- 33,38 ----
          clones("/std/thing", 1) --> ergibt ({ o })
          clones("/std/thing", 2) --> ergibt ({ o, p })
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.8.
          LDMud 3.2.9 fuehrte die dynamischen Kosten ein.
diff -c efun.de.orig/closurep.de efun.de/closurep.de
*** efun.de.orig/closurep.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/closurep.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 4,10 ****
  BESCHREIBUNG
          Liefert 1, wenn das Argument eine Closure ist, ansonsten 0.
  
! AENDERUNGEN
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
--- 4,10 ----
  BESCHREIBUNG
          Liefert 1, wenn das Argument eine Closure ist, ansonsten 0.
  
! GESCHICHTE
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
diff -c efun.de.orig/command.de efun.de/command.de
*** efun.de.orig/command.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/command.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT
  SYNOPSIS
!         int command(string str);
!         int command(string str, object ob);
  
  BESCHREIBUNG
          Wertet <str> wie ein Kommando aus, das direkt von einem interaktiven
--- 1,7 ----
  GESCHUETZT
  SYNOPSIS
!         int command(string str)
!         int command(string str, object ob)
  
  BESCHREIBUNG
          Wertet <str> wie ein Kommando aus, das direkt von einem interaktiven
***************
*** 18,31 ****
          diesem Wege keine "static" deklarierten Funktionen aufgerufen werden,
          um etwas Schutz vor unerlaubten Aufrufen zu geben.
  
!         Kommandi werden gestapelt, das heisst, nach der Ausfuehrung von <str>
          werden die alten Werte fuer this_player(), query_verb() etc. wieder
          hergestellt.
  
! AENDERUNGEN
!         Bis 3.2.6 im Native-Modus konnten Kommandi nur auf das aktuelle Objekt
!             angewendet werden.
!         Seit 3.2.7 werden Kommandi gestapelt.
  
  SIEHE AUCH
          command_stack(E), notify_fail(E), enable_commands(E), get_eval_cost(E)
--- 18,31 ----
          diesem Wege keine "static" deklarierten Funktionen aufgerufen werden,
          um etwas Schutz vor unerlaubten Aufrufen zu geben.
  
!         Kommandos werden gestapelt, das heisst, nach der Ausfuehrung von <str>
          werden die alten Werte fuer this_player(), query_verb() etc. wieder
          hergestellt.
  
! GESCHICHTE
!         Bis 3.2.6 im Native-Modus konnten Kommandos nur auf das aktuelle 
!             Objekt angewendet werden.
!         Seit 3.2.7 werden Kommandos gestapelt.
  
  SIEHE AUCH
          command_stack(E), notify_fail(E), enable_commands(E), get_eval_cost(E)
diff -c efun.de.orig/command_stack.de efun.de/command_stack.de
*** efun.de.orig/command_stack.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/command_stack.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,13 ****
  GESCHUETZT
  SYNOPSIS
!         #include <sys/commands.h>
  
!         *mixed command_stack();
  
  BESCHREIBUNG
!         Liefert ein Array, das den Kommando Stack beschreibt. Das Array
!         umfasst command_stack_depth() Eintraege, der erste davon beschreibt
!         das Top-Level Kommando, der letze Eintrag das aktuelle Kommando.
  
          Jeder Eintrag ist wiederum ein Array mit folgenden Eintraegen:
  
--- 1,13 ----
  GESCHUETZT
  SYNOPSIS
!         #include <commands.h>
  
!         mixed * command_stack()
  
  BESCHREIBUNG
!         Liefert ein Array, das den Kommandostack beschreibt. Das Array
!         umfasst command_stack_depth() Eintraege; der erste davon beschreibt
!         das Top-Level-Kommando, der letzte Eintrag das aktuelle Kommando.
  
          Jeder Eintrag ist wiederum ein Array mit folgenden Eintraegen:
  
***************
*** 19,34 ****
              mixed  [CMD_FAILOBJ]:   das Objekt, welches notify_fail() gesetzt
                                      hat
  
!         CMD_ORIGIN und CMD_PLAYER sind fuer gewohenlich das gleiche Objekt.
!         Es gibt nur einen Unterschied, wenn der modify_command Hook den
          Kommandogeber mit set_this_player() aendert.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
          LDMud 3.2.8 fuegte den CMD_FAILOBJ Eintrag hinzu.
  
- ANMERKUNG
-         Jeder der Eintraege im Array kann 0 sein.
- 
  SIEHE AUCH
          command(E), command_stack_depth(E), notify_fail(E)
--- 19,34 ----
              mixed  [CMD_FAILOBJ]:   das Objekt, welches notify_fail() gesetzt
                                      hat
  
!         CMD_ORIGIN und CMD_PLAYER sind fuer gewoehnlich das gleiche Objekt.
!         Es gibt nur einen Unterschied, wenn der modify_command-Hook den
          Kommandogeber mit set_this_player() aendert.
  
! ANMERKUNGEN
!         Jeder der Eintraege im Array kann 0 sein.
! 
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
          LDMud 3.2.8 fuegte den CMD_FAILOBJ Eintrag hinzu.
  
  SIEHE AUCH
          command(E), command_stack_depth(E), notify_fail(E)
diff -c efun.de.orig/command_stack_depth.de efun.de/command_stack_depth.de
*** efun.de.orig/command_stack_depth.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/command_stack_depth.de	2009-11-02 22:25:58.000000000 +0000
***************
*** 1,12 ****
  GESCHUETZT
  SYNOPSIS
!         int command_stack_depth();
  
  BESCHREIBUNG
!         Liefert die Anzahl der verschachtelten Kommandi, also die Tiefe des
          Command Stacks.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
  
  SIEHE AUCH
--- 1,12 ----
  GESCHUETZT
  SYNOPSIS
!         int command_stack_depth()
  
  BESCHREIBUNG
!         Liefert die Anzahl der verschachtelten Kommandos, also die Tiefe des
          Command Stacks.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
  
  SIEHE AUCH
diff -c efun.de.orig/copy_bits.de efun.de/copy_bits.de
*** efun.de.orig/copy_bits.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/copy_bits.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
          string copy_bits(string src, string dest [, int srcstart
!             [, int deststart [, int copylen]]]);
  
  BESCHREIBUNG
          Kopiert den Bitbereich [<srcstart> .. <srcstart> + <copylen>] aus dem
--- 1,6 ----
  SYNOPSIS
          string copy_bits(string src, string dest [, int srcstart
!             [, int deststart [, int copylen]]])
  
  BESCHREIBUNG
          Kopiert den Bitbereich [<srcstart> .. <srcstart> + <copylen>] aus dem
***************
*** 33,40 ****
  
          (Die Notation src[] / dest[] dient nur der Illustration!)
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.9
  
  SIEHE AUCH
          clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
--- 33,40 ----
  
          (Die Notation src[] / dest[] dient nur der Illustration!)
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
          clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
diff -c efun.de.orig/copy.de efun.de/copy.de
*** efun.de.orig/copy.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/copy.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,15 ****
  SYNOPSIS
!         mixed copy(mixed arg);
  
  BESCHREIBUNG
!         Erzegut eine flache Kopie von <arg> und liefert diese zurueck. Fuer
          Arrays und Mappings heisst das, dass neue Arrays bzw. Mappings erzeugt
          werden, die Kopien der Elemente des Originals enthalten. Eingebettete
          Arrays und Mappings werden jedoch als Referenz uebergeben!
  
          Fuer andere Werte von <arg> bewirkt diese Funktion nichts.
  
! BEISPIEL
          mixed *a, *b;
          a = ({ 1, ({ 21, 22 }) });
          b = copy(a);
--- 1,15 ----
  SYNOPSIS
!         mixed copy(mixed arg)
  
  BESCHREIBUNG
!         Erzeugt eine flache Kopie von <arg> und liefert diese zurueck. Fuer
          Arrays und Mappings heisst das, dass neue Arrays bzw. Mappings erzeugt
          werden, die Kopien der Elemente des Originals enthalten. Eingebettete
          Arrays und Mappings werden jedoch als Referenz uebergeben!
  
          Fuer andere Werte von <arg> bewirkt diese Funktion nichts.
  
! BEISPIELE
          mixed *a, *b;
          a = ({ 1, ({ 21, 22 }) });
          b = copy(a);
***************
*** 17,24 ****
              --> a ist nun ({ -1, ({ -21, 22 }) })
                  b ist nun ({  1, ({ -21, 22 }) })
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.6
  
  SIEHE AUCH
          deep_copy(E)
--- 17,24 ----
              --> a ist nun ({ -1, ({ -21, 22 }) })
                  b ist nun ({  1, ({ -21, 22 }) })
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.6.
  
  SIEHE AUCH
          deep_copy(E)
diff -c efun.de.orig/copy_file.de efun.de/copy_file.de
*** efun.de.orig/copy_file.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/copy_file.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int copy_file(string from, string to);
  
  BESCHREIBUNG
          Die Efun copy_file() kopiert die Datei <from> nach <to>. Wenn <to> ein
--- 1,5 ----
  SYNOPSIS
!         int copy_file(string from, string to)
  
  BESCHREIBUNG
          Die Efun copy_file() kopiert die Datei <from> nach <to>. Wenn <to> ein
***************
*** 9,20 ****
          Die Funktion erfordert Lesezugriff auf <from> und Schreibrechte fuer
          <to>.
  
!         Bei Erfolg liefert die Funktion 0 zurueck, etwas anderes sonst.
  
! BEISPIEL
          copy_file("/players/wizard/obj.c", "/players/wizard/newobj.c");
  
! AENDERUNGEN
          LDMud 3.2.9 beschraenkte die Fehlermeldungen auf Werte != 0.
  
  SIEHE AUCH
--- 9,21 ----
          Die Funktion erfordert Lesezugriff auf <from> und Schreibrechte fuer
          <to>.
  
!         Bei Erfolg liefert die Funktion 0 zurueck, im Fehlerfalle einen
!         Wert ungleich Null.
  
! BEISPIELE
          copy_file("/players/wizard/obj.c", "/players/wizard/newobj.c");
  
! GESCHICHTE
          LDMud 3.2.9 beschraenkte die Fehlermeldungen auf Werte != 0.
  
  SIEHE AUCH
diff -c efun.de.orig/copy_mapping.de efun.de/copy_mapping.de
*** efun.de.orig/copy_mapping.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/copy_mapping.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 7,13 ****
          und nicht bloss eine Referenz auf das Original, wie bei der Addition
          / Subtraktion bei Mappings.
  
! AENDERUNGEN
          Diese Funktion wurde durch copy() abgeloest.
  
  SIEHE AUCH
--- 7,13 ----
          und nicht bloss eine Referenz auf das Original, wie bei der Addition
          / Subtraktion bei Mappings.
  
! GESCHICHTE
          Diese Funktion wurde durch copy() abgeloest.
  
  SIEHE AUCH
diff -c efun.de.orig/cos.de efun.de/cos.de
*** efun.de.orig/cos.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/cos.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 4,10 ****
  BESCHREIBUNG
          Liefert den Kosinus des Argumentes.
  
! AENDERUNGEN
          LDMud 3.2.9: Ganzzahlen (Integers) als Argument hinzugefuegt.
  
  SIEHE AUCH
--- 4,10 ----
  BESCHREIBUNG
          Liefert den Kosinus des Argumentes.
  
! GESCHICHTE
          LDMud 3.2.9: Ganzzahlen (Integers) als Argument hinzugefuegt.
  
  SIEHE AUCH
diff -c efun.de.orig/count_bits.de efun.de/count_bits.de
*** efun.de.orig/count_bits.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/count_bits.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         int count_bits(string str);
  
  BESCHREIBUNG
          Diese Funktion zaehlt die Anzahl gesetzer Bits im Bitstring <str> und
          liefert die Anzahl als Resultat zurueck.
  
! BEISPIEL
          string s;
          s = set_bit("", 3); s = set_bit(s, 15);
          count_bits(s) --> liefert 2
--- 1,11 ----
  SYNOPSIS
!         int count_bits(string str)
  
  BESCHREIBUNG
          Diese Funktion zaehlt die Anzahl gesetzer Bits im Bitstring <str> und
          liefert die Anzahl als Resultat zurueck.
  
! BEISPIELE
          string s;
          s = set_bit("", 3); s = set_bit(s, 15);
          count_bits(s) --> liefert 2
diff -c efun.de.orig/creator.de efun.de/creator.de
*** efun.de.orig/creator.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/creator.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         string creator (object ob)
  
! DESCRIPTION
!         Diese Funktion is nicht verfuegbar im native Modus, da dieser
!         user-ids verwendet.
  
          Resultat is der Name des Erzeugers des Objektes. Dies kann ein
          Wizard sein, oder eine Domain.
--- 1,8 ----
  SYNOPSIS
!         string creator(object ob)
  
! BESCHREIBUNG
!         Diese Funktion ist nur im COMPAT-Modus verfuegbar.
  
          Resultat is der Name des Erzeugers des Objektes. Dies kann ein
          Wizard sein, oder eine Domain.
diff -c efun.de.orig/crypt.de efun.de/crypt.de
*** efun.de.orig/crypt.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/crypt.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         string crypt(string str, int seed);
!         string crypt(string str, string seed);
  
  BESCHREIBUNG
          Verschluesselt den String <str> mit dem Schluessel <seed>. <seed> kann
--- 1,6 ----
  SYNOPSIS
!         string crypt(string str, int seed)
!         string crypt(string str, string seed)
  
  BESCHREIBUNG
          Verschluesselt den String <str> mit dem Schluessel <seed>. <seed> kann
diff -c efun.de.orig/ctime.de efun.de/ctime.de
*** efun.de.orig/ctime.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/ctime.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         string ctime(int clock);
!         string ctime(int* uclock);
  
  BESCHREIBUNG
          Interpretiert das Argument <clock> als Anzahl Sekunden seit dem
--- 1,6 ----
  SYNOPSIS
!         string ctime(int clock)
!         string ctime(int *uclock)
  
  BESCHREIBUNG
          Interpretiert das Argument <clock> als Anzahl Sekunden seit dem
***************
*** 10,24 ****
  
          Die zweite Form entspricht der ersten, ausser dass das Argument ein
          Array mit zwei Integer Elementen ist. Das erste Element int[0] gibt
!         die Anzahl Sekunden seit dem 01.JAN.1970 an, das zweite Element
          int[1] die Anzahl Millisekunden innerhalb dieser Sekunde.
  
! BEISPIEL
          write(ctime()+"\n");
  
          Dies gibt etwas aus wie "Sun Oct 26 19:28:30 2003".
  
! AENDERUNGEN
          LDMud 3.2.9 fuehrte die zweite Variante ein.
  
  SIEHE AUCH
--- 10,24 ----
  
          Die zweite Form entspricht der ersten, ausser dass das Argument ein
          Array mit zwei Integer Elementen ist. Das erste Element int[0] gibt
!         die Anzahl Sekunden seit dem 01. Januar 1970 an, das zweite Element
          int[1] die Anzahl Millisekunden innerhalb dieser Sekunde.
  
! BEISPIELE
          write(ctime()+"\n");
  
          Dies gibt etwas aus wie "Sun Oct 26 19:28:30 2003".
  
! GESCHICHTE
          LDMud 3.2.9 fuehrte die zweite Variante ein.
  
  SIEHE AUCH
diff -c efun.de.orig/db_coldefs.de efun.de/db_coldefs.de
*** efun.de.orig/db_coldefs.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/db_coldefs.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         string * db_coldefs (int handle)
  
  BESCHREIBUNG
          Resultat ist ein Array mit den Spaltennamen der Tabelle des
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         string * db_coldefs(int handle)
  
  BESCHREIBUNG
          Resultat ist ein Array mit den Spaltennamen der Tabelle des
diff -c efun.de.orig/db_handles.de efun.de/db_handles.de
*** efun.de.orig/db_handles.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/db_handles.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         int *db_handles()
  
  BESCHREIBUNG
          Result ist ein Array mit allen aktiven Verbindungshandles zum
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         int * db_handles()
  
  BESCHREIBUNG
          Result ist ein Array mit allen aktiven Verbindungshandles zum
diff -c efun.de.orig/db_insert_id.de efun.de/db_insert_id.de
*** efun.de.orig/db_insert_id.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/db_insert_id.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         int db_insert_id (int handle)
  
  BESCHREIBUNG
          Nach dem Einfuegen einer Zeile in eine Tabelle mit einem
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         int db_insert_id(int handle)
  
  BESCHREIBUNG
          Nach dem Einfuegen einer Zeile in eine Tabelle mit einem
diff -c efun.de.orig/[].de efun.de/[].de
*** efun.de.orig/[].de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/[].de	2009-11-02 22:26:00.000000000 +0000
***************
*** 2,9 ****
          mixed  arr[index];
          int    str[index];
  
!         *mixed arr[from .. to];
!         string str[from .. to];
  
  BESCHREIBUNG
          Liefert ein Element aus einem Array oder String (erste Form), oder
--- 2,9 ----
          mixed  arr[index];
          int    str[index];
  
!         mixed * arr[from..to];
!         string  str[from..to];
  
  BESCHREIBUNG
          Liefert ein Element aus einem Array oder String (erste Form), oder
***************
*** 52,58 ****
          str[1..2] = "bar"               -> str == "tbart"
          str[1..2] = ""                  -> str == "tt"
  
! AENDERUNGEN
          slice_array() ist die alte Form der []-Operatoren fuer Arrays,
          extract() ist die alte Form der []-Operatoren fuer Strings.
          BEIDE VARIANTEN SIND VERALTET, WERDEN NICHT MEHR UNTERSTUETZT UND
--- 52,58 ----
          str[1..2] = "bar"               -> str == "tbart"
          str[1..2] = ""                  -> str == "tt"
  
! GESCHICHTE
          slice_array() ist die alte Form der []-Operatoren fuer Arrays,
          extract() ist die alte Form der []-Operatoren fuer Strings.
          BEIDE VARIANTEN SIND VERALTET, WERDEN NICHT MEHR UNTERSTUETZT UND
diff -c efun.de.orig/debug_info.de efun.de/debug_info.de
*** efun.de.orig/debug_info.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/debug_info.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,10 ****
  GESCHUETZT
  SYNOPSIS
!         #include <sys/debug_info.h>
  
!         mixed debug_info(int flag);
!         mixed debug_info(int flag, mixed arg);
!         mixed debug_info(int flag, mixed arg2, mixed arg3);
  
  BESCHREIBUNG
          Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
--- 1,10 ----
  GESCHUETZT
  SYNOPSIS
!         #include <debug_info.h>
  
!         mixed debug_info(int flag)
!         mixed debug_info(int flag, mixed arg)
!         mixed debug_info(int flag, mixed arg2, mixed arg3)
  
  BESCHREIBUNG
          Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
***************
*** 351,357 ****
              bezeichnen den Call Stack, beginnen mit der hoechsten
              aufgerufenen Funktion.
  
!             Alle Eintraege im Array sind wiederdum Arrays mit folgenden
              Elementen:
                - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
                      TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
--- 351,357 ----
              bezeichnen den Call Stack, beginnen mit der hoechsten
              aufgerufenen Funktion.
  
!             Alle Eintraege im Array sind wiederum Arrays mit folgenden
              Elementen:
                - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
                      TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
***************
*** 376,382 ****
              <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
                  momentanen Call Trace als druckbarer String.
  
! AENDERUNGEN
          Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
              nur auszugeben.
          DINFO_DUMP wurde in 3.2.7 eingefuehrt.
--- 376,383 ----
              <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
                  momentanen Call Trace als druckbarer String.
  
! 
! GESCHICHTE
          Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
              nur auszugeben.
          DINFO_DUMP wurde in 3.2.7 eingefuehrt.
diff -c efun.de.orig/debug_message.de efun.de/debug_message.de
*** efun.de.orig/debug_message.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/debug_message.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         #include <sys/debug_message.h>
  
!         void debug_message(string text);
!         void debug_message(string text, int flags);
  
  BESCHREIBUNG
          Gibt <text> an die Ausgaenge stdout und stderr sowie an die Datei
!         <host>.debug.log, oder an eine beliebige Kombination dieser drei.
  
          Das Argument <flag> bezeichnet durch eine Kombination von Bitflags das
          Ziel und die Art, in der das Resultat geschrieben wird.
--- 1,12 ----
  SYNOPSIS
!         #include <debug_message.h>
  
!         void debug_message(string text)
!         void debug_message(string text, int flags)
  
  BESCHREIBUNG
          Gibt <text> an die Ausgaenge stdout und stderr sowie an die Datei
!         <host>.debug.log oder an eine beliebige Kombination dieser drei aus.
  
          Das Argument <flag> bezeichnet durch eine Kombination von Bitflags das
          Ziel und die Art, in der das Resultat geschrieben wird.
***************
*** 18,24 ****
          Wenn <flags> 0 ist, weggelassen wird oder kein Ziel-Flag enthaelt,
          wird <text> standardmaessig an stdout und ins Logfile ausgegeben.
  
! BEISPIEL
          debug_message("Dieser Text geht an stdout und ins Logfile.\n");
          debug_message("Dies geht an stderr.\n", DMSG_STDERR);
          debug_message("Dies geht an stdout und stderr.\n", DMSG_STDOUT
--- 18,25 ----
          Wenn <flags> 0 ist, weggelassen wird oder kein Ziel-Flag enthaelt,
          wird <text> standardmaessig an stdout und ins Logfile ausgegeben.
  
! 
! BEISPIELE
          debug_message("Dieser Text geht an stdout und ins Logfile.\n");
          debug_message("Dies geht an stderr.\n", DMSG_STDERR);
          debug_message("Dies geht an stdout und stderr.\n", DMSG_STDOUT
***************
*** 28,34 ****
          debug_message("Die geht an stdout, mit vorangestelltem Timestamp.\n",
              DMSG_STDOUT | DMSG_STAMP);
  
! AENDERUNGEN
          Eingefuehrt in 3.2.1@34.
          LDMud 3.2.9 fuehrte das Argument <flags> ein.
  
--- 29,35 ----
          debug_message("Die geht an stdout, mit vorangestelltem Timestamp.\n",
              DMSG_STDOUT | DMSG_STAMP);
  
! GESCHICHTE
          Eingefuehrt in 3.2.1@34.
          LDMud 3.2.9 fuehrte das Argument <flags> ein.
  
diff -c efun.de.orig/deep_copy.de efun.de/deep_copy.de
*** efun.de.orig/deep_copy.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/deep_copy.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed deep_copy(mixed arg);
  
  BESCHREIBUNG
          Erzeugt eine echte Kopie von <arg> und liefert diese zurueck. Fuer
--- 1,5 ----
  SYNOPSIS
!         mixed deep_copy(mixed arg)
  
  BESCHREIBUNG
          Erzeugt eine echte Kopie von <arg> und liefert diese zurueck. Fuer
***************
*** 14,20 ****
          Mapping oder Array zu den Evaluationskosten sowohl in der Groesse als
          auch in der Einbettungstiefe.
  
! BEISPIEL
          mixed *a, *b;
          a = ({ 1, ({ 21, 22 }) });
          b = deep_copy(a);
--- 14,20 ----
          Mapping oder Array zu den Evaluationskosten sowohl in der Groesse als
          auch in der Einbettungstiefe.
  
! BEISPIELE
          mixed *a, *b;
          a = ({ 1, ({ 21, 22 }) });
          b = deep_copy(a);
***************
*** 22,27 ****
           --> a ist jetzt   ({ -1, ({ -21, 22 }) })
               b bleibt      ({  1, ({  21, 22 }) })
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6.
          LDMud 3.2.9 fuegte die dynamischen Kosten zur Efun hinzu.
--- 22,27 ----
           --> a ist jetzt   ({ -1, ({ -21, 22 }) })
               b bleibt      ({  1, ({  21, 22 }) })
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6.
          LDMud 3.2.9 fuegte die dynamischen Kosten zur Efun hinzu.
diff -c efun.de.orig/deep_inventory.de efun.de/deep_inventory.de
*** efun.de.orig/deep_inventory.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/deep_inventory.de	2009-11-02 23:03:58.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         *object deep_inventory();
!         *object deep_inventory(object ob);
  
  BESCHREIBUNG
          Gibt ein Array der Objekte zurueck, die in <obj> enthalten sind.
--- 1,6 ----
  SYNOPSIS
!         object * deep_inventory()
!         object * deep_inventory(object ob)
  
  BESCHREIBUNG
          Gibt ein Array der Objekte zurueck, die in <obj> enthalten sind.
***************
*** 12,18 ****
          <ob>
              ob1
              ob2
!                 ob21 -> deep_inventory(obj) == ({ob1,ob2,ob3,ob4,ob21,ob31})
              ob3
                  ob31
              ob4
--- 12,18 ----
          <ob>
              ob1
              ob2
!                 ob21 -> deep_inventory(obj) == ({ ob1,ob2,ob3,ob4,ob21,ob31 })
              ob3
                  ob31
              ob4
diff -c efun.de.orig/destruct.de efun.de/destruct.de
*** efun.de.orig/destruct.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/destruct.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 27,33 ****
          es moeglich, dass ein Objekt noch lange nach seiner Zerstoerung
          Speicher belegt, obwohl es von ausserhalb nicht mehr gefunden wird.
  
! BEISPIEL
          ob->remove();
          if(ob)        // es existiert noch, vielleicht ist die Lfun
                        // remove() nicht definiert?
--- 27,33 ----
          es moeglich, dass ein Objekt noch lange nach seiner Zerstoerung
          Speicher belegt, obwohl es von ausserhalb nicht mehr gefunden wird.
  
! BEISPIELE
          ob->remove();
          if(ob)        // es existiert noch, vielleicht ist die Lfun
                        // remove() nicht definiert?
***************
*** 36,42 ****
          Dies ist die Standard-Methode, ein Objekt zu zerstoeren, ihm aber
          vorher noch die Chance zu geben, es selber zu tun.
  
! AENDERUNGEN
          LDMud 3.2.7: 0 (zerstoerte Objekt) als Argument annehmen.
  
  SIEHE AUCH
--- 36,42 ----
          Dies ist die Standard-Methode, ein Objekt zu zerstoeren, ihm aber
          vorher noch die Chance zu geben, es selber zu tun.
  
! GESCHICHTE
          LDMud 3.2.7: 0 (zerstoerte Objekt) als Argument annehmen.
  
  SIEHE AUCH
diff -c efun.de.orig/disable_commands.de efun.de/disable_commands.de
*** efun.de.orig/disable_commands.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/disable_commands.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         void disable_commands();
  
  BESCHREIBUNG
!         Verbietet dem Objekt, Kommandi zu verwenden, die normalerweise Usern
          zugaenglich sind. Diese Funktion ist das Gegenteil von
          enable_commands().
  
--- 1,8 ----
  SYNOPSIS
!         void disable_commands()
  
  BESCHREIBUNG
!         Verbietet dem Objekt, Kommandos zu verwenden, die normalerweise Usern
          zugaenglich sind. Diese Funktion ist das Gegenteil von
          enable_commands().
  
diff -c efun.de.orig/ed.de efun.de/ed.de
*** efun.de.orig/ed.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/ed.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         void ed();
!         void ed(string file);
!         void ed(string file, string func);
  
  BESCHREIBUNG
          Der Aufruf von ed() ohne Argumente startet den Editor mit dem Namen
--- 1,7 ----
  SYNOPSIS
!         void ed()
!         void ed(string file)
!         void ed(string file, string func)
  
  BESCHREIBUNG
          Der Aufruf von ed() ohne Argumente startet den Editor mit dem Namen
diff -c efun.de.orig/efun308.de efun.de/efun308.de
*** efun.de.orig/efun308.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/efun308.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,16 ****
  VERALTET, GESCHUETZT
  SYNOPSIS
!         void efun308(object item, object env);
  
  BESCHREIBUNG
          Das Objekt <item> wird in eine neue Umgebung <env> bewegt, die auch 0
          sein kann. Diese Efun ist fuer die Verwendung im move_object() Treiber
!         Hook gedacht. Sie macht nichts als <item> zu bewegen - keine Aufrufe
!         von init() und aehnliches.
  
          Diese Funktion soll deshalb nicht in eigenen Objekten verwendet werden.
  
! GESCHCIHTE
          Eingefuehrt in 3.2.1@1.
          Umbenannt nach set_environment() in LDMud 3.2.6.
          Seit LDMud 3.2.9 ist diese Efun nur noch verfuegbar, wenn der Treiber
--- 1,16 ----
  VERALTET, GESCHUETZT
  SYNOPSIS
!         void efun308(object item, object env)
  
  BESCHREIBUNG
          Das Objekt <item> wird in eine neue Umgebung <env> bewegt, die auch 0
          sein kann. Diese Efun ist fuer die Verwendung im move_object() Treiber
!         Hook gedacht. Sie macht nichts anderes als <item> zu bewegen -- 
!         keine Aufrufe von init() und aehnliches.
  
          Diese Funktion soll deshalb nicht in eigenen Objekten verwendet werden.
  
! GESCHICHTE
          Eingefuehrt in 3.2.1@1.
          Umbenannt nach set_environment() in LDMud 3.2.6.
          Seit LDMud 3.2.9 ist diese Efun nur noch verfuegbar, wenn der Treiber
diff -c efun.de.orig/efun.de efun.de/efun.de
*** efun.de.orig/efun.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/efun.de	2009-11-02 23:04:44.000000000 +0000
***************
*** 3,9 ****
  
  BESCHREIBUNG
          Dieses Directory enthaelt die Beschreibungen fuer die Efuns in
!         LDMud 3.2.10 .
  
          Diese Funktionen werden vom Driver zur Verfuegung gestellt und koennen
          von jedem LPC-Objekt verwendet werden.
--- 3,9 ----
  
  BESCHREIBUNG
          Dieses Directory enthaelt die Beschreibungen fuer die Efuns in
!         LDMud 3.2.
  
          Diese Funktionen werden vom Driver zur Verfuegung gestellt und koennen
          von jedem LPC-Objekt verwendet werden.
***************
*** 38,44 ****
               save_object() to a string
               set_limits()
  
!          - 'Obsolet' or 'Veraltet'
  
             Diese Efuns sollten nicht weiter verwendet werden. Sie stehen
             lediglich aus Kompatibilitaetsgruenden zur Verfuegung, und
--- 38,44 ----
               save_object() to a string
               set_limits()
  
!          - 'Obsolet' bzw. 'Veraltet'
  
             Diese Efuns sollten nicht weiter verwendet werden. Sie stehen
             lediglich aus Kompatibilitaetsgruenden zur Verfuegung, und
diff -c efun.de.orig/enable_commands.de efun.de/enable_commands.de
*** efun.de.orig/enable_commands.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/enable_commands.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,18 ****
  SYNOPSIS
!         void enable_commands();
  
  BESCHREIBUNG
!         Erlaubt dem Objekt, Kommandi zu verwenden, die normalerweise Usern
          zugaenglich sind. Der Aufruf markiert das Objekt als "living".
  
          Diese Funktion darf nicht ausserhalb von create() (oder reset(0) im
          Compat-Modus) aufgerufen werden, weil der der Kommandogeber auf dieses
          Objekt gesetzt wird.
  
! BEISPIEL
!         void create()
!         {
              enable_commands();
              ...
          }
  
--- 1,18 ----
  SYNOPSIS
!         void enable_commands()
  
  BESCHREIBUNG
!         Erlaubt dem Objekt, Kommandos zu verwenden, die normalerweise Usern
          zugaenglich sind. Der Aufruf markiert das Objekt als "living".
  
          Diese Funktion darf nicht ausserhalb von create() (oder reset(0) im
          Compat-Modus) aufgerufen werden, weil der der Kommandogeber auf dieses
          Objekt gesetzt wird.
  
! BEISPIELE
!         void create() {
              enable_commands();
+             set_living_name("dummymonster");
              ...
          }
  
diff -c efun.de.orig/enable_telnet.de efun.de/enable_telnet.de
*** efun.de.orig/enable_telnet.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/enable_telnet.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int enable_telnet (int num, object obj = this_interactive() )
  
  BESCHREIBUNG
          Aktiviere oder deaktiviere die Telnet-Maschine fuer das interaktive
--- 1,6 ----
  SYNOPSIS
!         int enable_telnet(int num)
!         int enable_telnet(int num, object obj)
  
  BESCHREIBUNG
          Aktiviere oder deaktiviere die Telnet-Maschine fuer das interaktive
***************
*** 11,23 ****
          <obj> : das interaktive Object, default ist this_interactive().
                  Fuer nicht-interaktive Objekte wird ein Laufzeitfehler erzeugt.
          
!         Die Funktion erzeugt eine privilege_violation ("enable_telnet", obj,
          num) wenn <num> is >= 0. Wird das Privileg verneint, wird der
          Funktionsaufruf ignoriert.
          
          WARNUNG: Unvorsichtiger Gebrauch dieser Funktion kann sowohl Server
          als auch Clients enorm verwirren! Diese Funktion existiert primaer
!         als Unterstuetzung fuer PSYCmuve, und kann wieder entfernt werden wenn
          eine konsistentere Handhabung fuer Netzwerkverbindungen implementiert
          wird.
  
--- 12,24 ----
          <obj> : das interaktive Object, default ist this_interactive().
                  Fuer nicht-interaktive Objekte wird ein Laufzeitfehler erzeugt.
          
!         Die Funktion erzeugt eine privilege violation ("enable_telnet", obj,
          num) wenn <num> is >= 0. Wird das Privileg verneint, wird der
          Funktionsaufruf ignoriert.
          
          WARNUNG: Unvorsichtiger Gebrauch dieser Funktion kann sowohl Server
          als auch Clients enorm verwirren! Diese Funktion existiert primaer
!         als Unterstuetzung fuer PSYCmuve und kann wieder entfernt werden, wenn
          eine konsistentere Handhabung fuer Netzwerkverbindungen implementiert
          wird.
  
diff -c efun.de.orig/environment.de efun.de/environment.de
*** efun.de.orig/environment.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/environment.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         object environment();
!         object environment(object obj);
!         object environment(string obj);
  
  BESCHREIBUNG
          Gibt das umgebende Objekt von <obj> wider. Das Objekt <obj> kann
--- 1,7 ----
  SYNOPSIS
!         object environment()
!         object environment(object obj)
!         object environment(string obj)
  
  BESCHREIBUNG
          Gibt das umgebende Objekt von <obj> wider. Das Objekt <obj> kann
***************
*** 11,17 ****
  
          Zerstoerte Objekte haben kein Environment.
  
! BEISPIEL
          object room;
          room = environment(this_player());
  
--- 11,17 ----
  
          Zerstoerte Objekte haben kein Environment.
  
! BEISPIELE
          object room;
          room = environment(this_player());
  
diff -c efun.de.orig/exec.de efun.de/exec.de
*** efun.de.orig/exec.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/exec.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         int exec(object new, object old);
  
  BESCHREIBUNG
          exec() schaltet die Verbindung um vom interaktiven Objekt <old> zum
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         int exec(object new, object old)
  
  BESCHREIBUNG
          exec() schaltet die Verbindung um vom interaktiven Objekt <old> zum
***************
*** 28,39 ****
          bind_lambda() #'exec an das richtige Objekt gebunden und anschliessend
          mit funcall() aufgerufen werden.
  
! BEISPIEL
          ob = clone_object("std/player");
          exec(ob, this_object());
          destruct(this_object());
  
! AENDERUNGEN
          LDMud 3.2.9 fuehrte den Austauschprozess fuer this_interactive() ein.
  
  SIEHE AUCH
--- 28,39 ----
          bind_lambda() #'exec an das richtige Objekt gebunden und anschliessend
          mit funcall() aufgerufen werden.
  
! BEISPIELE
          ob = clone_object("std/player");
          exec(ob, this_object());
          destruct(this_object());
  
! GESCHICHTE
          LDMud 3.2.9 fuehrte den Austauschprozess fuer this_interactive() ein.
  
  SIEHE AUCH
diff -c efun.de.orig/execute_command.de efun.de/execute_command.de
*** efun.de.orig/execute_command.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/execute_command.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  VORLAEUFIG, GESCHUETZT
  SYNOPSIS
!         int execute_command(string command, object origin, object player);
  
  BESCHREIBUNG
          Diese Funktion bietet Low-Level Zugriff auf den Kommandoparser:
--- 1,6 ----
  VORLAEUFIG, GESCHUETZT
  SYNOPSIS
!         int execute_command(string command, object origin, object player)
  
  BESCHREIBUNG
          Diese Funktion bietet Low-Level Zugriff auf den Kommandoparser:
***************
*** 14,21 ****
          H_NOTIFY_FAIL Hook. Zwar kann notify_fail() verwendet werden, die
          Verarbeitung muss jedoch durch das aufrufende Objekt erfolgen.
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.7
  
  SIEHE AUCH
          hooks(C), command(E), notify_fail(E), command_stack(E)
--- 14,21 ----
          H_NOTIFY_FAIL Hook. Zwar kann notify_fail() verwendet werden, die
          Verarbeitung muss jedoch durch das aufrufende Objekt erfolgen.
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.7.
  
  SIEHE AUCH
          hooks(C), command(E), notify_fail(E), command_stack(E)
diff -c efun.de.orig/expand_define.de efun.de/expand_define.de
*** efun.de.orig/expand_define.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/expand_define.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         string expand_define(string name);
!         string expand_define(string name, string arg, ...);
  
  BESCHREIBUNG
          Wandelt das Makro <name> mit den Argumenten <arg> in den
--- 1,6 ----
  SYNOPSIS
!         string expand_define(string name)
!         string expand_define(string name, string arg, ...)
  
  BESCHREIBUNG
          Wandelt das Makro <name> mit den Argumenten <arg> in den
***************
*** 13,23 ****
          etwa den H_INCLUDE_DIRS Treiber Hook oder runtime_error() im
          Masterobjekt.
  
! BEISPIEL
          Waehrend dem Kompilieren von 'foo.c':
              expand_define("__FILE__") --> "foo.c"
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.1@93.
  
  SIEHE AUCH
--- 13,23 ----
          etwa den H_INCLUDE_DIRS Treiber Hook oder runtime_error() im
          Masterobjekt.
  
! BEISPIELE
          Waehrend dem Kompilieren von 'foo.c':
              expand_define("__FILE__") --> "foo.c"
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.1@93.
  
  SIEHE AUCH
diff -c efun.de.orig/exp.de efun.de/exp.de
*** efun.de.orig/exp.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/exp.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         float exp(int|float zahl);
  
  BESCHREIBUNG
          Die Exponentialfunktion. Liefert e^zahl.
  
! AENDERUNGEN
!         LDMud 3.2.9 fuehrte neu Integer als Argument ein.
  
  SIEHE AUCH
          log(E), pow(E)
--- 1,11 ----
  SYNOPSIS
!         float exp(int|float zahl)
  
  BESCHREIBUNG
          Die Exponentialfunktion. Liefert e^zahl.
  
! GESCHICHTE
!         LDMud 3.2.9 erlaubte Ganzzahlen als Argument.
  
  SIEHE AUCH
          log(E), pow(E)
diff -c efun.de.orig/explode.de efun.de/explode.de
*** efun.de.orig/explode.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/explode.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string *explode(string str, string del)
  
  BESCHREIBUNG
          Liefert ein Feld (Array) mit Zeichenketten (Strings), indem alle
--- 1,5 ----
  SYNOPSIS
!         string * explode(string str, string del)
  
  BESCHREIBUNG
          Liefert ein Feld (Array) mit Zeichenketten (Strings), indem alle
***************
*** 17,23 ****
          explode("abc", "xyz")       ({ "abc" })
          explode("abc", "")          ({ "a", "b", "c" })
  
! AENDERUNGEN
          Zeitpunkt der Aenderung unbekannt.
          explode(" ab cd ef ", " ") lieferte frueher ({ "ab", "cd", "ef" })
          anstatt ({ "", "ab", "cd", "ef", "" }), d. h., leere Zeichenketten
--- 17,23 ----
          explode("abc", "xyz")       ({ "abc" })
          explode("abc", "")          ({ "a", "b", "c" })
  
! GESCHICHTE
          Zeitpunkt der Aenderung unbekannt.
          explode(" ab cd ef ", " ") lieferte frueher ({ "ab", "cd", "ef" })
          anstatt ({ "", "ab", "cd", "ef", "" }), d. h., leere Zeichenketten
diff -c efun.de.orig/export_uid.de efun.de/export_uid.de
*** efun.de.orig/export_uid.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/export_uid.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         void export_uid(object ob);
  
  BESCHREIBUNG
          Setzt die UID des Objekts <ob> auf die effektive UID (EUID) des
          aktuellen Objekts. Dies ist nur moeglich, wenn das Objekt <ob>
          eine EUID von 0 hat.
  
! AENDERUNGEN
          Seit 3.2.1@47 ist diese Efun nur verfuegbar, wenn EUIDs verwendet
              werden.
          Seit 3.2.7 ist diese Efun immer verfuegbar.
--- 1,12 ----
  SYNOPSIS
!         void export_uid(object ob)
  
  BESCHREIBUNG
          Setzt die UID des Objekts <ob> auf die effektive UID (EUID) des
          aktuellen Objekts. Dies ist nur moeglich, wenn das Objekt <ob>
          eine EUID von 0 hat.
  
! GESCHICHTE
          Seit 3.2.1@47 ist diese Efun nur verfuegbar, wenn EUIDs verwendet
              werden.
          Seit 3.2.7 ist diese Efun immer verfuegbar.
diff -c efun.de.orig/extern_call.de efun.de/extern_call.de
*** efun.de.orig/extern_call.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/extern_call.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int extern_call();
  
  BESCHREIBUNG
          Liefert 0, wenn die momentane ausgefuehrte Funktion durch eine lokale
--- 1,5 ----
  SYNOPSIS
!         int extern_call()
  
  BESCHREIBUNG
          Liefert 0, wenn die momentane ausgefuehrte Funktion durch eine lokale
***************
*** 8,15 ****
          Funktion in all diesen Faellen 1 zurueck, in Zukunft koennte
          allerdings eine Unterscheidung der Aufrufe moeglich werden.
  
! AENDERUNGEN
!         Eingefuehrt in 3.2@263 bzw. 3.2.1@12
  
  SIEHE AUCH
          call_other(E), previous_object(E)
--- 8,15 ----
          Funktion in all diesen Faellen 1 zurueck, in Zukunft koennte
          allerdings eine Unterscheidung der Aufrufe moeglich werden.
  
! GESCHICHTE
!         Eingefuehrt in 3.2@263 bzw. 3.2.1@12.
  
  SIEHE AUCH
          call_other(E), previous_object(E)
diff -c efun.de.orig/extract.de efun.de/extract.de
*** efun.de.orig/extract.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/extract.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,7 ****
  VERALTET
  SYNOPSIS
!         string extract(string str, int from, int to);
!         string extract(string str, int from);
  
  BESCHREIBUNG
          Extrahiert einen Teilstring aus einem String.
--- 1,7 ----
  VERALTET
  SYNOPSIS
!         string extract(string str, int from, int to)
!         string extract(string str, int from)
  
  BESCHREIBUNG
          Extrahiert einen Teilstring aus einem String.
diff -c efun.de.orig/file_name.de efun.de/file_name.de
*** efun.de.orig/file_name.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/file_name.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,7 ****
  VERALTET
  SYNOPSIS
!         string file_name();
!         string file_name(object ob);
  
  BESCHREIBUNG
          Liefert den Namen des Objekts <ob> oder, wenn <ob> nicht angegeben
--- 1,7 ----
  VERALTET
  SYNOPSIS
!         string file_name()
!         string file_name(object ob)
  
  BESCHREIBUNG
          Liefert den Namen des Objekts <ob> oder, wenn <ob> nicht angegeben
***************
*** 22,34 ****
          Der Name, den die Funktion liefert, beginnt immer mit '/', ausser der
          Treiber laeuft im COMPAT-Modus.
  
! BEISPIEL
          find_object(file_name(ob)) == ob;
  
          Diese Beziehung gilt fuer alle Objekte ob, die nicht zerstoert wurden.
  
! AENDERUNGEN
!         Die Funktion wurde in LDMud 3.2.6 umbenannt zu object_name(). Der
              alte Name file_name() kann als Alias verwendet werden.
          Seit LDMud 3.2.9 ist die Funktion nur noch verfuegbar, wenn der Driver
              mit USE_DEPRECATED kompiliert wurde.
--- 22,34 ----
          Der Name, den die Funktion liefert, beginnt immer mit '/', ausser der
          Treiber laeuft im COMPAT-Modus.
  
! BEISPIELE
          find_object(file_name(ob)) == ob;
  
          Diese Beziehung gilt fuer alle Objekte ob, die nicht zerstoert wurden.
  
! GESCHICHTE
!         Die Funktion wurde in LDMud 3.2.6 zu object_name() umbenannt. Der
              alte Name file_name() kann als Alias verwendet werden.
          Seit LDMud 3.2.9 ist die Funktion nur noch verfuegbar, wenn der Driver
              mit USE_DEPRECATED kompiliert wurde.
diff -c efun.de.orig/file_size.de efun.de/file_size.de
*** efun.de.orig/file_size.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/file_size.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/files.h>
  
          int file_size(string file)
  
--- 1,5 ----
  SYNOPSIS
!         #include <files.h>
  
          int file_size(string file)
  
diff -c efun.de.orig/filter_array.de efun.de/filter_array.de
*** efun.de.orig/filter_array.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/filter_array.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,9 ****
  VERALTET
  SYNOPSIS
!         mixed *filter_array(mixed *arr, string fun, string|object ob,
!             mixed extra, ...);
!         mixed *filter_array(mixed *arr, closure cl, mixed extra, ... );
!         mixed *filter_array(mixed *arr, mapping map, mixed extra, ... );
  
  BESCHREIBUNG
          Liefert ein Array, das alle Elemente von <arr> enthaelt, fuer die
--- 1,9 ----
  VERALTET
  SYNOPSIS
!         mixed * filter_array(mixed *arr, string fun, string|object ob,
!                                                 mixed extra, ...)
!         mixed * filter_array(mixed *arr, closure cl, mixed extra, ... )
!         mixed * filter_array(mixed *arr, mapping map, mixed extra, ... )
  
  BESCHREIBUNG
          Liefert ein Array, das alle Elemente von <arr> enthaelt, fuer die
***************
*** 28,34 ****
          werden nur jene Elemente von <arr> ins Ergebnis aufgenommen, die ein
          Key von <map> sind (d.h. map[arr[index]] != 0).
  
! BEISPIEL
          int check_if_idle(object user) { return query_idle(user); }
          ...
          object *idle_users;
--- 28,34 ----
          werden nur jene Elemente von <arr> ins Ergebnis aufgenommen, die ein
          Key von <map> sind (d.h. map[arr[index]] != 0).
  
! BEISPIELE
          int check_if_idle(object user) { return query_idle(user); }
          ...
          object *idle_users;
***************
*** 39,45 ****
          Das Array *idle_users enthaelt jetzt alle User, die fuer mehr als
          1 Sekunde idle waren.
  
! AENDERUNGEN
          Seit LDMud 3.2.6 abgeloest von filter().
          Seit LDMud 3.2.9 ist die Funktion nur noch verfuegbar, wenn der
              Treiber mit USE_DEPRECATED kompiliert wurde.
--- 39,45 ----
          Das Array *idle_users enthaelt jetzt alle User, die fuer mehr als
          1 Sekunde idle waren.
  
! GESCHICHTE
          Seit LDMud 3.2.6 abgeloest von filter().
          Seit LDMud 3.2.9 ist die Funktion nur noch verfuegbar, wenn der
              Treiber mit USE_DEPRECATED kompiliert wurde.
diff -c efun.de.orig/filter.de efun.de/filter.de
*** efun.de.orig/filter.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/filter.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         mixed *filter(mixed *arg, string func, string|object ob,
!             mixed extra...);
!         mixed *filter(mixed *arg, closure cl, mixed extra...);
!         mixed *filter(mixed *arg, mapping map, mixed extra...);
          mapping filter(mapping arg, string func, string|object ob,
!             mixed extra...);
!         mapping filter(mapping arg, closure cl, mixed extra...);
  
  BESCHREIBUNG
          Ruft fuer jedes Element des Arrays oder Mappings <arg> die Funktion
--- 1,11 ----
  SYNOPSIS
!         mixed * filter(mixed *arg, string func, string|object ob,
!                                                       mixed extra...)
!         mixed * filter(mixed *arg, closure cl, mixed extra...)
!         mixed * filter(mixed *arg, mapping map, mixed extra...)
          mapping filter(mapping arg, string func, string|object ob,
!                                                       mixed extra...)
!         mapping filter(mapping arg, closure cl, mixed extra...)
  
  BESCHREIBUNG
          Ruft fuer jedes Element des Arrays oder Mappings <arg> die Funktion
***************
*** 45,57 ****
          multidimensionalen Mappings (Mappings mit mehreren Werte pro Key und
          Mappings aus Arrays) gleich verarbeitet werden koennen.
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.6. Die Funktion loest filter_array() ab.
! 
! ANMERKUNG
          Fuer Arrays wirkt filter() wie filter_array(), fuer Mappings stellt
          filter() eine Verallgemeinerung von filter_indices() dar.
  
  SIEHE AUCH
          filter(E), filter_indices(E), map(E), walk_mapping(E), member(E),
          m_contains(E)
--- 45,57 ----
          multidimensionalen Mappings (Mappings mit mehreren Werte pro Key und
          Mappings aus Arrays) gleich verarbeitet werden koennen.
  
! ANMERKUNGEN
          Fuer Arrays wirkt filter() wie filter_array(), fuer Mappings stellt
          filter() eine Verallgemeinerung von filter_indices() dar.
  
+ GESCHICHTE
+         Eingefuehrt in LDMud 3.2.6. Die Funktion loest filter_array() ab.
+ 
  SIEHE AUCH
          filter(E), filter_indices(E), map(E), walk_mapping(E), member(E),
          m_contains(E)
diff -c efun.de.orig/filter_indices.de efun.de/filter_indices.de
*** efun.de.orig/filter_indices.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/filter_indices.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,8 ****
  VERALTET
  SYNOPSIS
          mapping filter_indices(mapping map, string func, string|object ob,
!             mixed extra ... );
!         mapping filter_indices(mapping map, closure cl, mixed extra ... );
  
  BESCHREIBUNG
          Die Funktion ob->func() bzw. die Closure cl wird fuer jedes Element
--- 1,8 ----
  VERALTET
  SYNOPSIS
          mapping filter_indices(mapping map, string func, string|object ob,
!                                                           mixed extra ... )
!         mapping filter_indices(mapping map, closure cl, mixed extra ... )
  
  BESCHREIBUNG
          Die Funktion ob->func() bzw. die Closure cl wird fuer jedes Element
***************
*** 18,24 ****
          Wird <ob> nicht angegeben oder weder ein String noch ein Objekt, so
          wird standardmaessig this_object() verwendet.
  
! AENDERUNGEN
          In LDMud 3.2.6 umbenannt aus filter_mapping() und verallgemeinert in
              der Efun filter().
  
--- 18,24 ----
          Wird <ob> nicht angegeben oder weder ein String noch ein Objekt, so
          wird standardmaessig this_object() verwendet.
  
! GESCHICHTE
          In LDMud 3.2.6 umbenannt aus filter_mapping() und verallgemeinert in
              der Efun filter().
  
diff -c efun.de.orig/filter_mapping.de efun.de/filter_mapping.de
*** efun.de.orig/filter_mapping.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/filter_mapping.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,8 ****
  VERALTET
  SYNOPSIS
          mapping filter_indices(mapping map, string func, string|object ob,
!             mixed extra ... );
!         mapping filter_indices(mapping map, closure cl, mixed extra ... );
  
  BESCHREIBUNG
          Die Funktion ob->func() bzw. die Closure cl wird fuer jedes Element
--- 1,8 ----
  VERALTET
  SYNOPSIS
          mapping filter_indices(mapping map, string func, string|object ob,
!                                                            mixed extra ... )
!         mapping filter_indices(mapping map, closure cl, mixed extra ... )
  
  BESCHREIBUNG
          Die Funktion ob->func() bzw. die Closure cl wird fuer jedes Element
***************
*** 18,27 ****
          Wird <ob> nicht angegeben oder weder ein String noch ein Objekt, so
          wird standardmaessig this_object() verwendet.
  
! AENDERUNGEN
          In LDMud 3.2.6 umbenannt zu filter_indices().
          Seit LDMud 3.2.9 nur noch verfuegbar, wenn der Treiber mit
!             USE_DEPRECATED kompiliert wurde
  
  SIEHE AUCH
          filter(E), map(E), map_indices(E), walk_mapping(E), member(E),
--- 18,27 ----
          Wird <ob> nicht angegeben oder weder ein String noch ein Objekt, so
          wird standardmaessig this_object() verwendet.
  
! GESCHICHTE
          In LDMud 3.2.6 umbenannt zu filter_indices().
          Seit LDMud 3.2.9 nur noch verfuegbar, wenn der Treiber mit
!             USE_DEPRECATED kompiliert wurde.
  
  SIEHE AUCH
          filter(E), map(E), map_indices(E), walk_mapping(E), member(E),
diff -c efun.de.orig/filter_objects.de efun.de/filter_objects.de
*** efun.de.orig/filter_objects.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/filter_objects.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object *filter_objects(object *arr, string fun, mixed extra, ...);
  
  BESCHREIBUNG
          Diese Efun ist aehnlich wie filter(), es wird aber
--- 1,5 ----
  SYNOPSIS
!         object * filter_objects(object *arr, string fun, mixed extra, ...)
  
  BESCHREIBUNG
          Diese Efun ist aehnlich wie filter(), es wird aber
diff -c efun.de.orig/find_call_out.de efun.de/find_call_out.de
*** efun.de.orig/find_call_out.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/find_call_out.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int find_call_out(string fun);
!         int find_call_out(closur cl);
  
  BESCHREIBUNG
          Findet den ersten call_out() auf die Funktion fun im aktuellen Objekt
--- 1,6 ----
  SYNOPSIS
!         int find_call_out(string fun)
!         int find_call_out(closur cl)
  
  BESCHREIBUNG
          Findet den ersten call_out() auf die Funktion fun im aktuellen Objekt
***************
*** 8,14 ****
          wird die verbleibende Zeit bis zum Aufruf. Wenn kein call_out()
          haengig ist, wird -1 zurueck gegeben.
  
! BUGS
          Die Suche nach call_out()s auf Closures funktioniert nur, wenn der
          genaue Wert der Closure gesucht wird.
  
--- 8,14 ----
          wird die verbleibende Zeit bis zum Aufruf. Wenn kein call_out()
          haengig ist, wird -1 zurueck gegeben.
  
! FEHLER
          Die Suche nach call_out()s auf Closures funktioniert nur, wenn der
          genaue Wert der Closure gesucht wird.
  
***************
*** 21,27 ****
              call_out(symbol_function("main", obj), 2);
              find_call_out(symbol_function("main", obj));
  
! AENDERUNGEN
          Die Suche nach call_out()s auf Closures wurde in 3.2.1@45 eingefuehrt.
  
  SIEHE AUCH
--- 21,27 ----
              call_out(symbol_function("main", obj), 2);
              find_call_out(symbol_function("main", obj));
  
! GESCHICHTE
          Die Suche nach call_out()s auf Closures wurde in 3.2.1@45 eingefuehrt.
  
  SIEHE AUCH
diff -c efun.de.orig/find_input_to.de efun.de/find_input_to.de
*** efun.de.orig/find_input_to.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/find_input_to.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         int find_input_to (object player, string fun);
!         int find_input_to (object player, closure fun);
!         int find_input_to (object player, object fun);
!         int find_input_to (object player, object ob, string fun);
  
  BESCHREIBUNG
          Findet den zuletzt fuer <player> gestarteten input_to(), abhaengig vom
--- 1,8 ----
  SYNOPSIS
!         int find_input_to(object player, string fun)
!         int find_input_to(object player, closure fun)
!         int find_input_to(object player, object fun)
!         int find_input_to(object player, object ob, string fun)
  
  BESCHREIBUNG
          Findet den zuletzt fuer <player> gestarteten input_to(), abhaengig vom
***************
*** 18,25 ****
          die Position im input_to() Stack (wobei 0 den als letztes
          hinzugefuegten input_to() bezeichnet).
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.9
  
  SIEHE AUCH
          input_to(E), input_to_info(E), remove_input_to(E),
--- 18,25 ----
          die Position im input_to() Stack (wobei 0 den als letztes
          hinzugefuegten input_to() bezeichnet).
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
          input_to(E), input_to_info(E), remove_input_to(E),
diff -c efun.de.orig/find_object.de efun.de/find_object.de
*** efun.de.orig/find_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/find_object.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         object find_object(string str);
  
  BESCHREIBUNG
!         Liefert das Objekt mit dem Namen <str>. Wenn das Objekt nicht geladen
!         wurde, wird es nicht gefunden.
  
! BEISPIEL
          object obj;
          obj = find_object("std/thing");
          obj = find_object("std/thing.c");
--- 1,11 ----
  SYNOPSIS
!         object find_object(string str)
  
  BESCHREIBUNG
!         Liefert das Objekt mit dem Namen <str>. Wenn das Objekt nicht
!         geladen ist, wird es nicht gefunden.
  
! BEISPIELE
          object obj;
          obj = find_object("std/thing");
          obj = find_object("std/thing.c");
diff -c efun.de.orig/first_inventory.de efun.de/first_inventory.de
*** efun.de.orig/first_inventory.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/first_inventory.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         object first_inventory();
!         object first_inventory(string ob);
!         object first_inventory(object ob);
  
  BESCHREIBUNG
          Liefert das erste Objekt im Inventory von <obj>, wobei <obj> entweder
--- 1,7 ----
  SYNOPSIS
!         object first_inventory()
!         object first_inventory(string ob)
!         object first_inventory(object ob)
  
  BESCHREIBUNG
          Liefert das erste Objekt im Inventory von <obj>, wobei <obj> entweder
***************
*** 17,23 ****
              }
  
          Wer solche Aufrufe haeufig verwendet, findet es moeglicherweise
!         sinnvoll, ein Praeprozessor Makro zu verwenden:
  
              #define FORALL(x, y) for(x=first_inventory(y);x;
                  x=next_inventory(x))
--- 17,23 ----
              }
  
          Wer solche Aufrufe haeufig verwendet, findet es moeglicherweise
!         sinnvoll, ein Praeprozessor-Makro zu verwenden:
  
              #define FORALL(x, y) for(x=first_inventory(y);x;
                  x=next_inventory(x))
diff -c efun.de.orig/floor.de efun.de/floor.de
*** efun.de.orig/floor.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/floor.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         float floor(float arg);
  
  BESCHREIBUNG
          Rundet das Argument <arg> ab auf die naechste ganze Zahl und gibt
--- 1,5 ----
  SYNOPSIS
!         float floor(float arg)
  
  BESCHREIBUNG
          Rundet das Argument <arg> ab auf die naechste ganze Zahl und gibt
***************
*** 11,17 ****
          floor(-4.5) --> liefert -5.0
          floor(5)    --> liefert 5.0
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
          LDMud 3.2.9 erlaubt auch Integer als Argumente.
  
--- 11,17 ----
          floor(-4.5) --> liefert -5.0
          floor(5)    --> liefert 5.0
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
          LDMud 3.2.9 erlaubt auch Integer als Argumente.
  
diff -c efun.de.orig/funcall.de efun.de/funcall.de
*** efun.de.orig/funcall.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/funcall.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         mixed funcall(closure cl, mixed arg, ...);
  
  BESCHREIBUNG
          Wertet die Closure <cl> aus. Die Argumente <args> werden als Argumente
          an die Closure uebergeben. Wenn <cl> keine Closure ist, wird <cl>
          zurueck gegeben.
  
! AENDERUNGEN
          Eingefuehrt in 3.2@70.
          Das Zurueckgeben von <cl>, wenn es sich nicht um eine Closure handelt,
              auch wenn Argumente angegeben wurden, wurde in 3.2.1 eingefuehrt.
--- 1,12 ----
  SYNOPSIS
!         mixed funcall(closure cl, mixed arg, ...)
  
  BESCHREIBUNG
          Wertet die Closure <cl> aus. Die Argumente <args> werden als Argumente
          an die Closure uebergeben. Wenn <cl> keine Closure ist, wird <cl>
          zurueck gegeben.
  
! GESCHICHTE
          Eingefuehrt in 3.2@70.
          Das Zurueckgeben von <cl>, wenn es sich nicht um eine Closure handelt,
              auch wenn Argumente angegeben wurden, wurde in 3.2.1 eingefuehrt.
diff -c efun.de.orig/function_exists.de efun.de/function_exists.de
*** efun.de.orig/function_exists.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/function_exists.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
          #include <functionlist.h>
  
!         mixed function_exists(string str [, int flags]);
!         mixed function_exists(string str, object ob [, int flags]);
  
  BESCHREIBUNG
          Sucht eine Funktion <str> im aktuellen Objekt bzw. im Objekt <ob>. Je
--- 1,10 ----
  SYNOPSIS
          #include <functionlist.h>
  
!         mixed function_exists(string str)
!         mixed function_exists(string str, int flags)
!         mixed function_exists(string str, object ob)
!         mixed function_exists(string str, object ob, int flags)
  
  BESCHREIBUNG
          Sucht eine Funktion <str> im aktuellen Objekt bzw. im Objekt <ob>. Je
***************
*** 35,53 ****
              int    [FEXISTS_FLAGS]:    die Funktionsflags
  
          <flags> kann mit einem binaren Oder mit NAME_HIDDEN ergaenzt
!         werden, um Informationen ueber static und protected deklarierte
          Funktionen in anderen Objekten zu erhalten. Es ist nicht moeglich,
!         Informationen ueber private deklarierte Funktionen zu erhalten.
  
-         Wenn die Funktion nicht gefunden werden kann (weil sie nicht
-         existiert oder fuer den Aufrufer nicht sichtbar ist), liefert
-         die Funktion 0.
  
  BEISPIELE
          function_exists("create");
          function_exists("create", that_object, NAME_HIDDEN|FEXISTS_ALL);
  
! AENDERUNGEN
          LDMud 3.2.10 erweiterte die Menge der zurueck gelieferten Werte und
              fuehrte das <flags> Argument ein.
          LDMud 3.2.12 fuegte die zusaetzliche Funktionsinformation zum
--- 37,56 ----
              int    [FEXISTS_FLAGS]:    die Funktionsflags
  
          <flags> kann mit einem binaren Oder mit NAME_HIDDEN ergaenzt
!         werden, um Informationen ueber als static und protected deklarierte
          Funktionen in anderen Objekten zu erhalten. Es ist nicht moeglich,
!         Informationen ueber als private deklarierte Funktionen zu erhalten.
! 
!         Wenn die gesuchte Funktion nicht gefunden werden kann (weil sie
!         nicht existiert oder fuer den Aufrufer nicht sichtbar ist), dann
!         wird als Rueckgabewert 0 geliefert.
  
  
  BEISPIELE
          function_exists("create");
          function_exists("create", that_object, NAME_HIDDEN|FEXISTS_ALL);
  
! GESCHICHTE
          LDMud 3.2.10 erweiterte die Menge der zurueck gelieferten Werte und
              fuehrte das <flags> Argument ein.
          LDMud 3.2.12 fuegte die zusaetzliche Funktionsinformation zum
diff -c efun.de.orig/functionlist.de efun.de/functionlist.de
*** efun.de.orig/functionlist.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/functionlist.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,9 ****
  GESCHUETZT
  SYNOPSIS
!         #include <sys/functionlist.h>
!         #include <sys/lpctypes.h>
  
!         mixed *functionlist(object ob, int flags = RETURN_FUNCTION_NAME)
  
  BESCHREIBUNG
          Liefert ein Array mit Informationen zu den Lfuns von <ob>. Fuer jede
--- 1,9 ----
  GESCHUETZT
  SYNOPSIS
!         #include <functionlist.h>
!         #include <lpctypes.h>
  
!         mixed * functionlist(object ob, int flags)
  
  BESCHREIBUNG
          Liefert ein Array mit Informationen zu den Lfuns von <ob>. Fuer jede
***************
*** 11,17 ****
          eingetragen, und zwar in folgender Reihenfolge:
            - der Name der Funktion
            - die Flags der Funktion (vergleiche weiter unten)
!           - den Rueckgabetyp (aufgelistet in mudlib/sys/lpctypes.h)
            - die Anzahl Argumente, die die Funktion akzeptiert.
  
          <ob> kann als echtes Objekt oder als Objektname uebergeben werden. Im
--- 11,17 ----
          eingetragen, und zwar in folgender Reihenfolge:
            - der Name der Funktion
            - die Flags der Funktion (vergleiche weiter unten)
!           - den Rueckgabetyp (aufgelistet in <lpctypes.h>)
            - die Anzahl Argumente, die die Funktion akzeptiert.
  
          <ob> kann als echtes Objekt oder als Objektname uebergeben werden. Im
***************
*** 20,30 ****
          <flags> bestimmt sowohl, welche Informationen im Ergebnis gesammelt
          werden, als auch, fuer welche Funktionen die Pruefung durchgefuehrt
          wird. Der Wert von <flags> wird durch binaere Veroderung folgender
!         Konstanten aus mudlib/sys/functionlist.h festgelegt:
  
          Festlegen der gesammelten Information:
              RETURN_FUNCTION_NAME        liefert den Funktionsnamen
!             RETURN_FUNCTION_FLAGS       liefert die Flas der Funktion
              RETURN_FUNCTION_TYPE        liefert den Rueckgabetyp der Funktion
              RETURN_FUNCTION_NUMARG      liefert die Anzahl moeglicher
                                          Argumente.
--- 20,30 ----
          <flags> bestimmt sowohl, welche Informationen im Ergebnis gesammelt
          werden, als auch, fuer welche Funktionen die Pruefung durchgefuehrt
          wird. Der Wert von <flags> wird durch binaere Veroderung folgender
!         Konstanten aus <functionlist.h> festgelegt:
  
          Festlegen der gesammelten Information:
              RETURN_FUNCTION_NAME        liefert den Funktionsnamen
!             RETURN_FUNCTION_FLAGS       liefert die Flags der Funktion
              RETURN_FUNCTION_TYPE        liefert den Rueckgabetyp der Funktion
              RETURN_FUNCTION_NUMARG      liefert die Anzahl moeglicher
                                          Argumente.
diff -c efun.de.orig/garbage_collection.de efun.de/garbage_collection.de
*** efun.de.orig/garbage_collection.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/garbage_collection.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT
  SYNOPSIS
!         void garbage_collection();
!         void garbage_collection(string filename);
  
  BESCHREIBUNG
          Befiehlt dem Treiber, nach Ende der aktuellen Ausfuehrung eine
--- 1,7 ----
  GESCHUETZT
  SYNOPSIS
!         void garbage_collection()
!         void garbage_collection(string filename)
  
  BESCHREIBUNG
          Befiehlt dem Treiber, nach Ende der aktuellen Ausfuehrung eine
***************
*** 18,25 ****
          Fuer andere Memory Allocators erzeugt garbage_collection() keinen
          Output. Ein allfaelliges Argument <filename> wird ignoriert.
  
! AENDERUNGEN
!         LDMud 3.2.9 fuehte neu das Argument <filename> ein.
  
  SIEHE AUCH
          rusage(E), valid_write(M)
--- 18,25 ----
          Fuer andere Memory Allocators erzeugt garbage_collection() keinen
          Output. Ein allfaelliges Argument <filename> wird ignoriert.
  
! GESCHICHTE
!         LDMud 3.2.9 fuehrte das Argument <filename> ein.
  
  SIEHE AUCH
          rusage(E), valid_write(M)
diff -c efun.de.orig/get_combine_charset.de efun.de/get_combine_charset.de
*** efun.de.orig/get_combine_charset.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/get_combine_charset.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/comm.h>
  
!         mixed get_combine_charset(int mode);
  
  BESCHREIBUNG
          Liefert den kombinierten Zeichensatz des momentanen interaktiven
--- 1,7 ----
  SYNOPSIS
!         #include <comm.h>
  
!         mixed get_combine_charset(int mode)
  
  BESCHREIBUNG
          Liefert den kombinierten Zeichensatz des momentanen interaktiven
***************
*** 10,16 ****
              <mode> == CHARSET_VECTOR: liefert den Zeichensatz als Bitvektor,
              <mode> == CHARSET_STRING: liefert den Zeichensatz als String.
  
!         Der Bitvektor wird interpretiert als Array von 8-Bit-Werten und
          kann bis zu 32 Elemente enthalten. Das Zeichen n ist "kombinierbar",
          wenn gilt:
  
--- 10,16 ----
              <mode> == CHARSET_VECTOR: liefert den Zeichensatz als Bitvektor,
              <mode> == CHARSET_STRING: liefert den Zeichensatz als String.
  
!         Der Bitvektor wird als Array von 8-Bit-Werten interpretiert und
          kann bis zu 32 Elemente enthalten. Das Zeichen n ist "kombinierbar",
          wenn gilt:
  
***************
*** 18,24 ****
  
          Wenn kein interaktiver Benutzer gesetzt ist, liefert die Funktion 0.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
--- 18,24 ----
  
          Wenn kein interaktiver Benutzer gesetzt ist, liefert die Funktion 0.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
diff -c efun.de.orig/get_connection_charset.de efun.de/get_connection_charset.de
*** efun.de.orig/get_connection_charset.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/get_connection_charset.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/comm.h>
  
!         mixed get_connection_charset(int mode);
  
  BESCHREIBUNG
          Die Efun liefert den Zeichensatz des aktuellen interaktiven Benutzers,
--- 1,7 ----
  SYNOPSIS
!         #include <comm.h>
  
!         mixed get_connection_charset(int mode)
  
  BESCHREIBUNG
          Die Efun liefert den Zeichensatz des aktuellen interaktiven Benutzers,
***************
*** 15,21 ****
              <mode> == CHARSET_QUOTE_IAC: liefert 0, wenn IACs nicht gequotet
                  werden, 1 sonst.
  
!         Der Bitvektor wird interpretiert als Array von 8-Bit-Werten und
          kann bis zu 32 Elemente enthalten. Das Zeichen n ist "kombinierbar",
          wenn gilt:
  
--- 15,21 ----
              <mode> == CHARSET_QUOTE_IAC: liefert 0, wenn IACs nicht gequotet
                  werden, 1 sonst.
  
!         Der Bitvektor wird als Array von 8-Bit-Werten interpretiert und
          kann bis zu 32 Elemente enthalten. Das Zeichen n ist "kombinierbar",
          wenn gilt:
  
***************
*** 23,29 ****
  
          Wenn kein interaktiver Benutzer gesetzt ist, liefert die Funktion 0.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
--- 23,29 ----
  
          Wenn kein interaktiver Benutzer gesetzt ist, liefert die Funktion 0.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
diff -c efun.de.orig/get_dir.de efun.de/get_dir.de
*** efun.de.orig/get_dir.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/get_dir.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
          #include <files.h>
  
!         mixed *get_dir(string str)
!         mixed *get_dir(string str, int mask)
  
  BESCHREIBUNG
          Benoetigt einen Pfad als erstes Argument und liefert ein Feld
--- 1,8 ----
  SYNOPSIS
          #include <files.h>
  
!         mixed * get_dir(string str)
!         mixed * get_dir(string str, int mask)
  
  BESCHREIBUNG
          Benoetigt einen Pfad als erstes Argument und liefert ein Feld
***************
*** 91,100 ****
                                           jede Datei in /obj den Namen, die
                                           Groesse und den Zeitpunkt der
                                           letzten Aenderung enthaelt, z.B.
!                                          ({
!                                              "axt.c"    ,  927, 994539583,
!                                              "schwert.c", 1283, 998153903,
!                                              }).
  
          get_dir("/obj/schwert.c", GETDIR_NAMES|GETDIR_PATH)
                                           ({ "/obj/sword.c" }), sofern
--- 91,100 ----
                                           jede Datei in /obj den Namen, die
                                           Groesse und den Zeitpunkt der
                                           letzten Aenderung enthaelt, z.B.
!                                            ({
!                                               "axt.c"    ,  927, 994539583,
!                                               "schwert.c", 1283, 998153903,
!                                            }).
  
          get_dir("/obj/schwert.c", GETDIR_NAMES|GETDIR_PATH)
                                           ({ "/obj/sword.c" }), sofern
***************
*** 106,117 ****
                           , get_dir(str, GETDIR_DATES) }));
          Liefert ein unsortiertes Feld mit Feldern, von denen ein jedes
          Name, Groesse und Zeit einer Datei enthaelt, z. B.
!         ({
!             ({ "schwert.c", 1283, 998153903 }),
!             ({ "axt.c"    ,  927, 994539583 }),
!             }).
  
! AENDERUNGEN
          LDMud 3.2.9: GETDIR_PATH eingefuehrt.
          LDMud 3.2.11: GETDIR_ACCESS und GETDIR_MODES eingefuehrt.
  
--- 106,117 ----
                           , get_dir(str, GETDIR_DATES) }));
          Liefert ein unsortiertes Feld mit Feldern, von denen ein jedes
          Name, Groesse und Zeit einer Datei enthaelt, z. B.
!           ({
!              ({ "schwert.c", 1283, 998153903 }),
!              ({ "axt.c"    ,  927, 994539583 }),
!           }).
  
! GESCHICHTE
          LDMud 3.2.9: GETDIR_PATH eingefuehrt.
          LDMud 3.2.11: GETDIR_ACCESS und GETDIR_MODES eingefuehrt.
  
diff -c efun.de.orig/get_error_file.de efun.de/get_error_file.de
*** efun.de.orig/get_error_file.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/get_error_file.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed *get_error_file(string name, int set_forget_flag);
  
  BESCHREIBUNG
          Liefert Informationen ueber den letzten Fehler, der fuer <name>
--- 1,5 ----
  SYNOPSIS
!         mixed * get_error_file(string name, int set_forget_flag)
  
  BESCHREIBUNG
          Liefert Informationen ueber den letzten Fehler, der fuer <name>
***************
*** 12,18 ****
          einem *) und ein numerisches Flag (das 'forget flag'), wenn der
          Fehler bereits angeschaut wurde.
  
!         Wenn es keinen Fehler fuer <name> gibt, wird 0 zurueck gegeben.
  
          Wenn <set_forget_flag> ungleich 0 ist, wird das 'forget flag' gesetzt,
          nachdem die Fehlermeldung ausgegeben wurde.
--- 12,18 ----
          einem *) und ein numerisches Flag (das 'forget flag'), wenn der
          Fehler bereits angeschaut wurde.
  
!         Wenn es keinen Fehler fuer <name> gibt, wird 0 zurueckgegeben.
  
          Wenn <set_forget_flag> ungleich 0 ist, wird das 'forget flag' gesetzt,
          nachdem die Fehlermeldung ausgegeben wurde.
diff -c efun.de.orig/geteuid.de efun.de/geteuid.de
*** efun.de.orig/geteuid.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/geteuid.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string geteuid(object ob);
  
  BESCHREIBUNG
          Liefert die effektive User-ID des Objekts <obj> (normalerweise ein
--- 1,5 ----
  SYNOPSIS
!         string geteuid(object ob)
  
  BESCHREIBUNG
          Liefert die effektive User-ID des Objekts <obj> (normalerweise ein
***************
*** 8,14 ****
          Zugriffschecks verwendet. Wenn <obj> nicht angegeben wird, wird
          standardmaessig this_object() verwendet.
  
! AENDERUNGEN
          Seit 3.2.1@47 war diese Efun nur verfuegbar, wenn EUIDs verwendet
              wurden.
          Seit 3.2.7 ist diese Efun immer verfuegbar.
--- 8,14 ----
          Zugriffschecks verwendet. Wenn <obj> nicht angegeben wird, wird
          standardmaessig this_object() verwendet.
  
! GESCHICHTE
          Seit 3.2.1@47 war diese Efun nur verfuegbar, wenn EUIDs verwendet
              wurden.
          Seit 3.2.7 ist diese Efun immer verfuegbar.
diff -c efun.de.orig/get_eval_cost.de efun.de/get_eval_cost.de
*** efun.de.orig/get_eval_cost.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/get_eval_cost.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int get_eval_cost();
  
  BESCHREIBUNG
          Liefert die noch verbleibenden Eval Kosten, die das momentane
--- 1,5 ----
  SYNOPSIS
!         int get_eval_cost()
  
  BESCHREIBUNG
          Liefert die noch verbleibenden Eval Kosten, die das momentane
***************
*** 8,14 ****
          Das Resultat beginnt bei einer hohen, vom Treiber festgelegten Zahl
          und nimmt fuer jede ausgefuehrte Anweisung ab.
  
! AENDERUNGEN
          Der Anfangswert, also die vom Treiber zur Verfuegung gestellten Evals,
              sind seit 3.2.6 in LDMud als Makro verfuegbar.
  
--- 8,14 ----
          Das Resultat beginnt bei einer hohen, vom Treiber festgelegten Zahl
          und nimmt fuer jede ausgefuehrte Anweisung ab.
  
! GESCHICHTE
          Der Anfangswert, also die vom Treiber zur Verfuegung gestellten Evals,
              sind seit 3.2.6 in LDMud als Makro verfuegbar.
  
diff -c efun.de.orig/get_extra_wizinfo.de efun.de/get_extra_wizinfo.de
*** efun.de.orig/get_extra_wizinfo.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/get_extra_wizinfo.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         mixed get_extra_wizinfo(object|string|int wiz);
  
  BESCHREIBUNG
          Liefert die <extra> Information, die in der Wizlist fuer den
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         mixed get_extra_wizinfo(object|string|int wiz)
  
  BESCHREIBUNG
          Liefert die <extra> Information, die in der Wizlist fuer den
diff -c efun.de.orig/get_max_commands.de efun.de/get_max_commands.de
*** efun.de.orig/get_max_commands.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/get_max_commands.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int get_max_commands([object obj]);
  
  BESCHREIBUNG
          Liefert die maximale Anzahl Kommandos, die der interaktive Benutzer
--- 1,5 ----
  SYNOPSIS
!         int get_max_commands([object obj])
  
  BESCHREIBUNG
          Liefert die maximale Anzahl Kommandos, die der interaktive Benutzer
***************
*** 13,19 ****
          einen LPC-Aufruf verursacht, also sowohl Aktionen, wie auch Aufrufe an
          input_to().
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
--- 13,19 ----
          einen LPC-Aufruf verursacht, also sowohl Aktionen, wie auch Aufrufe an
          input_to().
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
diff -c efun.de.orig/get_type_info.de efun.de/get_type_info.de
*** efun.de.orig/get_type_info.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/get_type_info.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed get_type_info(mixed arg, int flag);
  
  BESCHREIBUNG
          Liefert Informationen uber den Typ von <arg>, wie von <flag>
--- 1,5 ----
  SYNOPSIS
!         mixed get_type_info(mixed arg, int flag)
  
  BESCHREIBUNG
          Liefert Informationen uber den Typ von <arg>, wie von <flag>
***************
*** 28,41 ****
            - fuer gemeinsam verwendete Strings 0, ungleich 0 fuer andere Strings
            - -1 fuer alle anderen Datentypen
  
! BUGS
          Diese Funktion unterliegt haeufigen Veraenderungen im Zug der
          Treiberentwicklung.
  
! AENDERUNGEN
!         Eingefuehrt in 3.2@127
!         Flagwert 2 eingefuehrt in 3.2.1@84
!         Zusatzinformationen zu Strings eingefuehrt in 3.2.7
          Bis und mit 3.2.7 lieferte get_type_info(closure, 2) keine Objekte
              von Lamda Closures und gebundenen Lambda Closures.
          Bis und mit 3.2.7 lieferte get_type_info(closure, 2) keine Objekte von
--- 28,41 ----
            - fuer gemeinsam verwendete Strings 0, ungleich 0 fuer andere Strings
            - -1 fuer alle anderen Datentypen
  
! FEHLER
          Diese Funktion unterliegt haeufigen Veraenderungen im Zug der
          Treiberentwicklung.
  
! GESCHICHTE
!         Eingefuehrt in 3.2@127.
!         Flagwert 2 eingefuehrt in 3.2.1@84.
!         Zusatzinformationen zu Strings eingefuehrt in 3.2.7.
          Bis und mit 3.2.7 lieferte get_type_info(closure, 2) keine Objekte
              von Lamda Closures und gebundenen Lambda Closures.
          Bis und mit 3.2.7 lieferte get_type_info(closure, 2) keine Objekte von
diff -c efun.de.orig/getuid.de efun.de/getuid.de
*** efun.de.orig/getuid.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/getuid.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,16 ****
  SYNOPSIS
!         string getuid(object ob);
  
  BESCHREIBUNG
!         User-IDs werden im Compat Modus nicht verwendet.
          Die Funktion liefert die UID des Objekts, also den Namen des Gottes
          oder der Domain oder Gruppe, die fuer das Objekt verantwortlich ist.
          Der Name entspricht dem Namen, der in der Wizlist verwendet wird.
          Wird <ob> nicht angegeben, wird standardmaessig this_object()
          genommen.
  
! AENDERUNGEN
!         Seit 3.2.1@47 ist diese Efun ein Alias fuer creator()
  
  SIEHE AUCH
          seteuid(E), geteuid(E), export_uid(E), creator(E)
--- 1,16 ----
  SYNOPSIS
!         string getuid(object ob)
  
  BESCHREIBUNG
!         User-IDs werden im COMPAT-Modus nicht verwendet.
          Die Funktion liefert die UID des Objekts, also den Namen des Gottes
          oder der Domain oder Gruppe, die fuer das Objekt verantwortlich ist.
          Der Name entspricht dem Namen, der in der Wizlist verwendet wird.
          Wird <ob> nicht angegeben, wird standardmaessig this_object()
          genommen.
  
! GESCHICHTE
!         Seit 3.2.1@47 ist diese Efun ein Alias fuer creator().
  
  SIEHE AUCH
          seteuid(E), geteuid(E), export_uid(E), creator(E)
diff -c efun.de.orig/gmtime.de efun.de/gmtime.de
*** efun.de.orig/gmtime.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/gmtime.de	2009-11-02 22:26:00.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         #include <sys/time.h>
  
!         int *gmtime(int clock);
!         int *gmtime(int *uclock);
  
  BESCHREIBUNG
          Interpretiert <clock> als Anzahl Sekunden seit dem 01. Januar 1970,
--- 1,8 ----
  SYNOPSIS
!         #include <time.h>
  
!         int * gmtime(int clock)
!         int * gmtime(int *uclock)
  
  BESCHREIBUNG
          Interpretiert <clock> als Anzahl Sekunden seit dem 01. Januar 1970,
***************
*** 11,17 ****
  
          Alternativ kann auch ein Array mit zwei Elementen angegeben werden,
          wie es von uclock() geliefert wird: das erste Element wird
!         interpretiert wie <clock>, das zweite Element bezeichnet die
          Mikrosekunden in der aktuellen Sekunde. Dieses zweite Element wird
          ignoriert.
  
--- 11,17 ----
  
          Alternativ kann auch ein Array mit zwei Elementen angegeben werden,
          wie es von uclock() geliefert wird: das erste Element wird
!         wie <clock> interpretiert, das zweite Element bezeichnet die
          Mikrosekunden in der aktuellen Sekunde. Dieses zweite Element wird
          ignoriert.
  
***************
*** 26,38 ****
              int TM_YDAY  (7) : Tag im Jahr (0..365)
              int TM_ISDST (8) : TRUE: Daylight saving time
  
! BEISPIEL
          printf("Heute ist %s\n", ({ "Sonntag", "Montag", "Dienstag",
              "Mittwoch",        "Donnerstag", "Freitag", "Samstag"})
              [gmtime()[TM_WDAY]]);
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
!     ctime(E), localtime(E), time(E), utime(E)
--- 26,38 ----
              int TM_YDAY  (7) : Tag im Jahr (0..365)
              int TM_ISDST (8) : TRUE: Daylight saving time
  
! BEISPIELE
          printf("Heute ist %s\n", ({ "Sonntag", "Montag", "Dienstag",
              "Mittwoch",        "Donnerstag", "Freitag", "Samstag"})
              [gmtime()[TM_WDAY]]);
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
!         ctime(E), localtime(E), time(E), utime(E)
diff -c efun.de.orig/heart_beat_info.de efun.de/heart_beat_info.de
*** efun.de.orig/heart_beat_info.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/heart_beat_info.de	2009-11-02 22:26:01.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object *heart_beat_info()
  
  BESCHREIBUNG
          Resultat ist ein Array mit allen Objekten, die einen aktiven
--- 1,5 ----
  SYNOPSIS
!         object * heart_beat_info()
  
  BESCHREIBUNG
          Resultat ist ein Array mit allen Objekten, die einen aktiven
diff -c efun.de.orig/implode.de efun.de/implode.de
*** efun.de.orig/implode.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/implode.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 18,24 ****
          implode(explode("a short text", " "), "_")      "a_short_text"
  
  	Heutzutage kann man stattdessen auch
! 	regreplace("a short text", " ", "_", 1)
  	verwenden.
  
  SIEHE AUCH
--- 18,24 ----
          implode(explode("a short text", " "), "_")      "a_short_text"
  
  	Heutzutage kann man stattdessen auch
! 	    regreplace("a short text", " ", "_", 1)
  	verwenden.
  
  SIEHE AUCH
diff -c efun.de.orig/include_list.de efun.de/include_list.de
*** efun.de.orig/include_list.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/include_list.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         #include <sys/include_list.h>
  
!         string *include_list();
!         string *include_list(object ob);
!         string *include_list(object ob, int flags);
  
  BESCHREIBUNG
          Diese Funktion liefert Informationen ueber alle Dateien, die bei der
--- 1,9 ----
  SYNOPSIS
!         #include <include_list.h>
  
!         string * include_list()
!         string * include_list(object ob)
!         string * include_list(object ob, int flags)
  
  BESCHREIBUNG
          Diese Funktion liefert Informationen ueber alle Dateien, die bei der
***************
*** 38,44 ****
              in [i+0], [i+1] und [i+2] sind 0). Diese Untervektoren haben
              die gleiche Struktur wie das Resultatarray.
  
!         Wenn ein Objekt, inklusive <ob>, einem replace_programm() unterworfen
          war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
          wider.
  
--- 38,44 ----
              in [i+0], [i+1] und [i+2] sind 0). Diese Untervektoren haben
              die gleiche Struktur wie das Resultatarray.
  
!         Wenn ein Objekt inklusive <ob> einem replace_program() unterworfen
          war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
          wider.
  
***************
*** 47,53 ****
          Trotzdem beginnt der tatsaechliche Dateiname nicht mit einem '/',
          wenn der Treiber im COMPAT Modus laeuft.
  
! BEISPIEL
          Dieser Code erzeugt (mit /sys als Includeverzeichnis des Systems):
  
              a.c:  #include "b.h"
--- 47,54 ----
          Trotzdem beginnt der tatsaechliche Dateiname nicht mit einem '/',
          wenn der Treiber im COMPAT Modus laeuft.
  
! 
! BEISPIELE
          Dieser Code erzeugt (mit /sys als Includeverzeichnis des Systems):
  
              a.c:  #include "b.h"
***************
*** 73,80 ****
                   , "<c.h>",   "/sys/c.h", 1
                   })
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.9, 3.3.128
  
  SIEHE AUCH
          debug_info(E), inherit_list(E)
--- 74,81 ----
                   , "<c.h>",   "/sys/c.h", 1
                   })
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.9, 3.3.128.
  
  SIEHE AUCH
          debug_info(E), inherit_list(E)
diff -c efun.de.orig/inherit_list.de efun.de/inherit_list.de
*** efun.de.orig/inherit_list.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/inherit_list.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         #include <sys/inherit_list.h>
  
!         string *inherit_list();
!         string *inherit_list(object ob);
!         string *inherit_list(object ob, int flags);
  
  BESCHREIBUNG
          Liefert die Namen von allen Dateien, die von <ob> geerbt werden,
--- 1,9 ----
  SYNOPSIS
!         #include <inherit_list.h>
  
!         string * inherit_list()
!         string * inherit_list(object ob)
!         string * inherit_list(object ob, int flags)
  
  BESCHREIBUNG
          Liefert die Namen von allen Dateien, die von <ob> geerbt werden,
***************
*** 30,43 ****
          Alle Flags koennen mit einem binaeren Oder | verbunden werden, wobei
          INHLIST_FLAT und INHLIST_TREE sich gegenseitig ausschliessen.
  
!         Wenn ein Objekt, inklusive <ob>, einem replace_programm() unterworfen
          war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
          wider.
  
          Die Inheritpfade, die geliefert werden, beginnen immer mit '/'
          (absolute Pfade), auch wenn der Treiber im COMPAT Modus laeuft.
  
! BEISPIEL
          Gegeben folgende Vererbungsstruktur:
  
              / c - d
--- 30,44 ----
          Alle Flags koennen mit einem binaeren Oder | verbunden werden, wobei
          INHLIST_FLAT und INHLIST_TREE sich gegenseitig ausschliessen.
  
!         Wenn ein Objekt inklusive <ob> einem replace_program() unterworfen
          war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
          wider.
  
          Die Inheritpfade, die geliefert werden, beginnen immer mit '/'
          (absolute Pfade), auch wenn der Treiber im COMPAT Modus laeuft.
  
! 
! BEISPIELE
          Gegeben folgende Vererbungsstruktur:
  
              / c - d
***************
*** 51,57 ****
              inherit_list(a, 1) -> ({ "a", ({ "c", "d" }), "b" })
              inherit_list(a, 3) -> ({ "  a", ({ " c", "v d" }), "  b" })
  
! AENDERUNGEN
          Vor 3.2.8, begannen die gelieferten Namen niemals mit einem '/'.
          LDMud 3.2.9 fuehrte die Baumstruktur (_TREE) und Tags fuer virtuelle
              Inherits ("v ") ein.
--- 52,58 ----
              inherit_list(a, 1) -> ({ "a", ({ "c", "d" }), "b" })
              inherit_list(a, 3) -> ({ "  a", ({ " c", "v d" }), "  b" })
  
! GESCHICHTE
          Vor 3.2.8, begannen die gelieferten Namen niemals mit einem '/'.
          LDMud 3.2.9 fuehrte die Baumstruktur (_TREE) und Tags fuer virtuelle
              Inherits ("v ") ein.
diff -c efun.de.orig/input_to.de efun.de/input_to.de
*** efun.de.orig/input_to.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/input_to.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         #include <sys/input_to.h>
  
!         void input_to(string|closure fun);
!         void input_to(string|closure fun, int flag, ...);
!         void input_to(string|closure fun, int flag, string|closure prompt, ...);
  
  BESCHREIBUNG
          Die naechste Zeile, die der Spieler eintippt, wird als Argument an die
--- 1,9 ----
  SYNOPSIS
!         #include <input_to.h>
  
!         void input_to(string|closure fun)
!         void input_to(string|closure fun, int flag, ...)
!         void input_to(string|closure fun, int flag, string|closure prompt, ...)
  
  BESCHREIBUNG
          Die naechste Zeile, die der Spieler eintippt, wird als Argument an die
***************
*** 82,97 ****
              input_tos angehaengt.
  
          INPUT_IGNORE_BANG (128):
!             Eingaben, die mit ! beginnen, werden NICHT als Kommandi geparset,
              sondern auch als Argument an die Funkion <fun> uebergeben. Die
              Verwendung dieses Flags ist eingeschraenkt.
  
          Alle nachfolgenden Argumente werden als zweites bzw. drittes usw.
          Argument an <fun> uebergeben.
  
! BEISPIEL
!         void func()
!         {
              ...
              input_to("enter_name", INPUT_PROMPT, "Wie lautet dein Name?:");
              /* Frueher erledigte man dies mit:
--- 82,97 ----
              input_tos angehaengt.
  
          INPUT_IGNORE_BANG (128):
!             Eingaben, die mit ! beginnen, werden NICHT als Kommandos geparst,
              sondern auch als Argument an die Funkion <fun> uebergeben. Die
              Verwendung dieses Flags ist eingeschraenkt.
  
          Alle nachfolgenden Argumente werden als zweites bzw. drittes usw.
          Argument an <fun> uebergeben.
  
! 
! BEISPIELE
!         void func() {
              ...
              input_to("enter_name", INPUT_PROMPT, "Wie lautet dein Name?:");
              /* Frueher erledigte man dies mit:
***************
*** 101,108 ****
               ...
           }
  
!          enter_name(string str)
!          {
              write("Heisst du wirklich '"+str+"'?? *kicher*\n");
              ...
          }
--- 101,107 ----
               ...
           }
  
!         void enter_name(string str) {
              write("Heisst du wirklich '"+str+"'?? *kicher*\n");
              ...
          }
***************
*** 126,134 ****
          (einschliesslich etwaiger eigener non-INPUT_APPEND input_tos), geht
          die naechste Eingabe an enter_lastname().
  
! AENDERUNGEN
          Die Bedeutung von <flag> wurde in 3.2.1@93 erweitert.
!         Die Limitierung fuer das "stapeln" von input_to()s aus !-Kommandi
              wurde in LDMud 3.2.8 implementiert.
          Seit LDMud 3.2.8 kann <fun> in Form einer Closure angegeben werden.
          LDMud 3.2.9 fuehrte das Flag INPUT_PROMPT samt zugehoerigem Argument
--- 125,133 ----
          (einschliesslich etwaiger eigener non-INPUT_APPEND input_tos), geht
          die naechste Eingabe an enter_lastname().
  
! GESCHICHTE
          Die Bedeutung von <flag> wurde in 3.2.1@93 erweitert.
!         Die Limitierung fuer das "stapeln" von input_to()s aus !-Kommandos
              wurde in LDMud 3.2.8 implementiert.
          Seit LDMud 3.2.8 kann <fun> in Form einer Closure angegeben werden.
          LDMud 3.2.9 fuehrte das Flag INPUT_PROMPT samt zugehoerigem Argument
***************
*** 136,142 ****
          LDMud 3.2.11 fuehrte das INPUT_NO_TELNET Flag ein.
          LDMud 3.2.11 fuehrte das INPUT_APPEND Flag ein.
  
! BUGS
          Im Zeichenmodus sollten Zeilenumbrueche eigentlich als "\n" zurueck
          gegeben werden. Dies allerdings kann existierenden Code zerstoeren.
  
--- 135,141 ----
          LDMud 3.2.11 fuehrte das INPUT_NO_TELNET Flag ein.
          LDMud 3.2.11 fuehrte das INPUT_APPEND Flag ein.
  
! FEHLER
          Im Zeichenmodus sollten Zeilenumbrueche eigentlich als "\n" zurueck
          gegeben werden. Dies allerdings kann existierenden Code zerstoeren.
  
diff -c efun.de.orig/input_to_info.de efun.de/input_to_info.de
*** efun.de.orig/input_to_info.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/input_to_info.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         *mixed input_to_info(object player);
  
  BESCHREIBUNG
          Liefert ein Array aller fuer <player> haengigen input_to()s. Der
--- 1,5 ----
  SYNOPSIS
!         mixed * input_to_info(object player)
  
  BESCHREIBUNG
          Liefert ein Array aller fuer <player> haengigen input_to()s. Der
***************
*** 13,19 ****
              1:   Die Funktion (String oder Closure)
              2ff: Die Argumente
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
--- 13,19 ----
              1:   Die Funktion (String oder Closure)
              2ff: Die Argumente
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
diff -c efun.de.orig/insert_alist.de efun.de/insert_alist.de
*** efun.de.orig/insert_alist.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/insert_alist.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,7 ****
  OPTIONAL, VERALTET
  SYNOPSIS
!         mixed *insert_alist(mixed key, mixed data, ... , mixed *alist);
!         int    insert_alist(mixed key, mixed *keys);
  
  BESCHREIBUNG
       1. Form: Einfuegen in eine Alist.
--- 1,7 ----
  OPTIONAL, VERALTET
  SYNOPSIS
!         mixed * insert_alist(mixed key, mixed data, ... , mixed *alist)
!         int     insert_alist(mixed key, mixed *keys)
  
  BESCHREIBUNG
       1. Form: Einfuegen in eine Alist.
***************
*** 17,23 ****
          ist der Index, unter dem <key> eingefuegt oder bereits gefunden
          wurde.
  
! ANMERKUNG
          Wird mit String-Keys gearbeitet, kann der Index nach dem naechsten
          Aufruf von insert_alist() nicht mehr gueltig sein.
  
--- 17,23 ----
          ist der Index, unter dem <key> eingefuegt oder bereits gefunden
          wurde.
  
! ANMERKUNGEN
          Wird mit String-Keys gearbeitet, kann der Index nach dem naechsten
          Aufruf von insert_alist() nicht mehr gueltig sein.
  
diff -c efun.de.orig/interactive.de efun.de/interactive.de
*** efun.de.orig/interactive.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/interactive.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         int interactive(object obj);
  
  BESCHREIBUNG
          Liefert 1 zurueck, wenn <obj> ein interaktiver User (ein Spieler)
!         ist. Wird <obj> weggelassen, wird this_object()verwendet.
  
  SIEHE AUCH
          query_once_interactive(E), query_ip_number(E), query_ip_name(E),
--- 1,10 ----
  SYNOPSIS
!         int interactive()
!         int interactive(object obj)
  
  BESCHREIBUNG
          Liefert 1 zurueck, wenn <obj> ein interaktiver User (ein Spieler)
!         ist, sonst 0. Wird <obj> weggelassen, so wird this_object() verwendet.
  
  SIEHE AUCH
          query_once_interactive(E), query_ip_number(E), query_ip_name(E),
diff -c efun.de.orig/intersect_alist.de efun.de/intersect_alist.de
*** efun.de.orig/intersect_alist.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/intersect_alist.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,13 ****
  OPTIONAL, VERALTET
  SYNOPSIS
!         mixed *intersect_alist(mixed *list1, mixed *list2);
  
  BESCHREIBUNG
          Liefert eine schnelle Schnittmenge von zwei Alist Key-Vektoren (NICHT
!         von zwei vollstaendigen Alists). Der Opeartor '&' erzeugt Schnittmengen
          von Arrays im Allgemeinen.
  
! BEISPIEL
          new_list = intersect_alist(list1, list2);
  
  SIEHE AUCH
--- 1,13 ----
  OPTIONAL, VERALTET
  SYNOPSIS
!         mixed * intersect_alist(mixed *list1, mixed *list2)
  
  BESCHREIBUNG
          Liefert eine schnelle Schnittmenge von zwei Alist Key-Vektoren (NICHT
!         von zwei vollstaendigen Alists). Der Operator '&' erzeugt Schnittmengen
          von Arrays im Allgemeinen.
  
! BEISPIELE
          new_list = intersect_alist(list1, list2);
  
  SIEHE AUCH
diff -c efun.de.orig/intp.de efun.de/intp.de
*** efun.de.orig/intp.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/intp.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 2,9 ****
          int intp(mixed arg)
  
  BESCHREIBUNG
!         Liefert 1, wenn das Argument eine Ganzzahl (Integer) ist, ansonsten
!         0.
  
  SIEHE AUCH
          closurep(E), floatp(E), mappingp(E), objectp(E), pointerp(E),
--- 2,8 ----
          int intp(mixed arg)
  
  BESCHREIBUNG
!         Liefert 1, wenn das Argument eine Ganzzahl (Integer) ist, sonst 0.
  
  SIEHE AUCH
          closurep(E), floatp(E), mappingp(E), objectp(E), pointerp(E),
diff -c efun.de.orig/invert_bits.de efun.de/invert_bits.de
*** efun.de.orig/invert_bits.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/invert_bits.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         string invert_bits(string str);
  
  BESCHREIBUNG
          Invertiert den Status aller Bits im Bitstring <str> und liefert den
          neuen String zurueck. Dabei bleibt die Laenge von <str>, also die
          gesamte Anzahl Bits, die gleiche.
  
! BEISPIEL
          string s;
          s = set_bit("", 3); s = set_bit(s, 4); s = set_bit(s, 15);
          --> s ist nun  "8 ("
--- 1,12 ----
  SYNOPSIS
!         string invert_bits(string str)
  
  BESCHREIBUNG
          Invertiert den Status aller Bits im Bitstring <str> und liefert den
          neuen String zurueck. Dabei bleibt die Laenge von <str>, also die
          gesamte Anzahl Bits, die gleiche.
  
! BEISPIELE
          string s;
          s = set_bit("", 3); s = set_bit(s, 4); s = set_bit(s, 15);
          --> s ist nun  "8 ("
diff -c efun.de.orig/lambda.de efun.de/lambda.de
*** efun.de.orig/lambda.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/lambda.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         closure lambda(mixed *arr, mixed);
  
  BESCHREIBUNG
          Erzeugt eine Lambda Closure, entsprechend den Lamda Closures in LISP.
--- 1,5 ----
  SYNOPSIS
!         closure lambda(mixed *arr, mixed)
  
  BESCHREIBUNG
          Erzeugt eine Lambda Closure, entsprechend den Lamda Closures in LISP.
***************
*** 10,16 ****
          beschreibt, die der Closure bei ihrer Auswertung durch funcall()
          oder apply() uebergeben werden.
  
! AENDERUNGEN
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
--- 10,16 ----
          beschreibt, die der Closure bei ihrer Auswertung durch funcall()
          oder apply() uebergeben werden.
  
! GESCHICHTE
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
diff -c efun.de.orig/last_bit.de efun.de/last_bit.de
*** efun.de.orig/last_bit.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/last_bit.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int last_bit(string str);
  
  BESCHREIBUNG
          Liefert die Nummer des letzten gesetzten Bits im Bitstring <str>.
--- 1,5 ----
  SYNOPSIS
!         int last_bit(string str)
  
  BESCHREIBUNG
          Liefert die Nummer des letzten gesetzten Bits im Bitstring <str>.
***************
*** 9,15 ****
          Leerschlag " " mit dem Wert 0. Das erste Zeichen im String ist jenes
          mit den niedrigsten Bits (0-5).
  
! BEISPIEL
          string s;
          s = set_bit("", 4); s = set_bit(s, 2);
          last_bit(s) --> liefert 4
--- 9,15 ----
          Leerschlag " " mit dem Wert 0. Das erste Zeichen im String ist jenes
          mit den niedrigsten Bits (0-5).
  
! BEISPIELE
          string s;
          s = set_bit("", 4); s = set_bit(s, 2);
          last_bit(s) --> liefert 4
diff -c efun.de.orig/last_instructions.de efun.de/last_instructions.de
*** efun.de.orig/last_instructions.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/last_instructions.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         string *last_instructions(int lenght, int verbose);
  
  BESCHREIBUNG
          Liefert ein Array mit der "Laenge" der zuletzt ausgefuehrten
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         string * last_instructions(int lenght, int verbose)
  
  BESCHREIBUNG
          Liefert ein Array mit der "Laenge" der zuletzt ausgefuehrten
diff -c efun.de.orig/limited.de efun.de/limited.de
*** efun.de.orig/limited.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/limited.de	2009-11-02 23:07:46.000000000 +0000
***************
*** 1,28 ****
  VORLAEUFIG, GESCHUETZT
  SYNOPSIS
!         #include <sys/rtlimits.h>
! 
!         mixed limited(closure fun);
!         mixed limited(closure fun, int tag, int value, ...);
!         mixed limited(closure fun, int *limits [, mixed *args]);
  
  BESCHREIBUNG
          limited() ruft die Funktion <fun> mit den bezeichneten Argumenten
!         <args> auf und fuehrt sie mit den gegebenen Laufzeitlimiten aus.
! 
          Beim Ende der Funktion <fun> werden die momentan aktiven
!         Laufzeitlimiten wiederhergestellt. limited() liefert den
          Rueckgabewert der Closure <fun> zurueck.
  
!         Die Laufzeitlimiten koennen in zwei Formen angegeben werden: als
!         Array (wie es von query_limits() geliefert wird) oder als Liste von
!         Werten mit Tags. Wird limited() ohne Angabe von Limits aufgerufen,
!         gelten die Laufzeitlimiten als 'unlimitiert'.
! 
!         Die Limiteneinstellung kennt drei spezielle Werte aus <rtlimits.h>:
              LIMIT_UNLIMITED:    es gibt kein Limit
              LIMIT_KEEP:         das zuletzt gesetzte Limit wird beibehalten
!             LIMIT_DEFAULT:      die 'globalen' Limiten werden verwendet
  
          limited() erzeugt eine Schutzverletzung ("limited", current_object,
          closure).
--- 1,30 ----
  VORLAEUFIG, GESCHUETZT
  SYNOPSIS
!         #include <rtlimits.h>
!   
!         mixed limited(closure fun)
!         mixed limited(closure fun, int tag, int value, ...)
!         mixed limited(closure fun, int *limits)
!         mixed limited(closure fun, int *limits, mixed *args)
  
  BESCHREIBUNG
          limited() ruft die Funktion <fun> mit den bezeichneten Argumenten
!         <args> auf und fuehrt sie mit den gegebenen Laufzeitlimitierungen aus.
!   
          Beim Ende der Funktion <fun> werden die momentan aktiven
!         Laufzeitlimitierungen wiederhergestellt. limited() liefert den
          Rueckgabewert der Closure <fun> zurueck.
  
!         Die Laufzeitlimitierungen koennen in zwei Formen angegeben werden: 
!         *  als Array (wie es von query_limits() geliefert wird) oder 
!         *  als Liste von Werten mit Tags.
!         Wird limited() ohne Angabe von Limits aufgerufen, gelten die
!         Laufzeitlimiten als 'unlimitiert'.
!   
!         Die Limitierung kennt drei spezielle Werte aus <rtlimits.h>:
              LIMIT_UNLIMITED:    es gibt kein Limit
              LIMIT_KEEP:         das zuletzt gesetzte Limit wird beibehalten
!             LIMIT_DEFAULT:      die 'globalen' Limitierungen werden verwendet
  
          limited() erzeugt eine Schutzverletzung ("limited", current_object,
          closure).
***************
*** 31,49 ****
          Fall kostet eine Closure 10 Ticks, unabhaengig davon, wie viele Ticks
          tatsaechlich verbraucht werden.
  
  BEISPIELE
          limited(#'function)
!         --> fuehrt die Funktion ohne Limiten aus.
  
          limited(#'function, ({ 200000 }), "foo")
!         --> fuehrt die Funktion mit einem Eval-Kosten Limit von 200000 Ticks
              aus. Die Funktion wird als 'function("foo")' aufgerufen.
  
          limited(lambda(0, ({#'function, "foo"})), LIMIT_EVAL, 200000)
!         --> fuehrt die Funktion mit einem Eval-Kosten Limit von 200000 Ticks
              aus. Die Funktion wird als 'function("foo")' aufgerufen.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
  
  SIEHE AUCH
--- 33,52 ----
          Fall kostet eine Closure 10 Ticks, unabhaengig davon, wie viele Ticks
          tatsaechlich verbraucht werden.
  
+ 
  BEISPIELE
          limited(#'function)
!         --> fuehrt die Funktion ohne Limits aus.
  
          limited(#'function, ({ 200000 }), "foo")
!         --> fuehrt die Funktion mit einem Eval-Kosten-Limit von 200000 Ticks
              aus. Die Funktion wird als 'function("foo")' aufgerufen.
  
          limited(lambda(0, ({#'function, "foo"})), LIMIT_EVAL, 200000)
!         --> fuehrt die Funktion mit einem Eval-Kosten-Limit von 200000 Ticks
              aus. Die Funktion wird als 'function("foo")' aufgerufen.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
  
  SIEHE AUCH
diff -c efun.de.orig/living.de efun.de/living.de
*** efun.de.orig/living.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/living.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         int living(object ob);
  
  BESCHREIBUNG
!         Liefert 1 zurueck, wenn <ob> ein lebendiges Objekt (living) ist.
!         <ob> ist living, wenn enable_commands() aus <obj> aufgerufen wurde.
!         <ob> kann auch 0 sein.
  
! BEISPIEL
          living(this_player());  -> Dies liefert (hoffentlich) 1 zuerueck.
  
  SIEHE AUCH
--- 1,12 ----
  SYNOPSIS
!         int living(object ob)
  
  BESCHREIBUNG
!         Liefert 1 zurueck, wenn <ob> ein lebendiges Objekt ("living") ist.
!         <ob> ist living, wenn enable_commands() aus <obj> heraus aufgerufen
!         wurde.  <ob> kann auch 0 sein.
  
! BEISPIELE
          living(this_player());  -> Dies liefert (hoffentlich) 1 zuerueck.
  
  SIEHE AUCH
diff -c efun.de.orig/load_name.de efun.de/load_name.de
*** efun.de.orig/load_name.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/load_name.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         string load_name();
!         string load_name(object|string obj);
  
  BESCHREIBUNG
          Die Funktion liefert den Namen, mit dem <obj> geladen wurde. <obj>
--- 1,6 ----
  SYNOPSIS
!         string load_name()
!         string load_name(object|string obj)
  
  BESCHREIBUNG
          Die Funktion liefert den Namen, mit dem <obj> geladen wurde. <obj>
***************
*** 28,34 ****
          replace_program() unterworfen, spiegelt der load_name() nicht mehr
          das effektive Verhalten des Objekts wider.
  
! BEISPIEL
          object o;
          o = clone_object("/std/thing");
          write(load_name(o));  --> liefert "/std/thing" in !Compat Modus
--- 28,34 ----
          replace_program() unterworfen, spiegelt der load_name() nicht mehr
          das effektive Verhalten des Objekts wider.
  
! BEISPIELE
          object o;
          o = clone_object("/std/thing");
          write(load_name(o));  --> liefert "/std/thing" in !Compat Modus
***************
*** 36,42 ****
          write(load_name("/std/thing"));  --> gleich wie oben
          write(load_name("/std/thing#4n5")); --> liefert 0
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6.
          Strings als Argumente sind moeglich seit 3.2.8.
          0 ist zulaessig seit 3.2.9.
--- 36,42 ----
          write(load_name("/std/thing"));  --> gleich wie oben
          write(load_name("/std/thing#4n5")); --> liefert 0
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6.
          Strings als Argumente sind moeglich seit 3.2.8.
          0 ist zulaessig seit 3.2.9.
diff -c efun.de.orig/load_object.de efun.de/load_object.de
*** efun.de.orig/load_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/load_object.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object load_object(string file);
  
  BESCHREIBUNG
          Laedt und liefert das Objekt aus der Datei <file>. Wenn das Objekt
--- 1,5 ----
  SYNOPSIS
!         object load_object(string file)
  
  BESCHREIBUNG
          Laedt und liefert das Objekt aus der Datei <file>. Wenn das Objekt
***************
*** 11,22 ****
          Werden strikte EUIDs verlangt, muss das ladende Objekt eine EUID != 0
          haben.
  
! BEISPIEL
          // Erneuere das Standard Player-Objekt
          destruct(find_object("/std/player"));
          load_object("/std/player");
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6.
  
  SIEHE AUCH
--- 11,22 ----
          Werden strikte EUIDs verlangt, muss das ladende Objekt eine EUID != 0
          haben.
  
! BEISPIELE
          // Erneuere das Standard Player-Objekt
          destruct(find_object("/std/player"));
          load_object("/std/player");
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6.
  
  SIEHE AUCH
diff -c efun.de.orig/localtime.de efun.de/localtime.de
*** efun.de.orig/localtime.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/localtime.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         #include <sys/time.h>
  
!         int *localtime(int clock);
!         int *localtime(int *uclock);
  
  BESCHREIBUNG
          Interpretiert das Argument <clock> als Anzahl Sekunden seit dem
--- 1,8 ----
  SYNOPSIS
!         #include <time.h>
  
!         int * localtime(int clock)
!         int * localtime(int *uclock)
  
  BESCHREIBUNG
          Interpretiert das Argument <clock> als Anzahl Sekunden seit dem
***************
*** 27,39 ****
              int TM_YDAY   (7):  Tag im Jahr (0..365)
              inz TM_ISDST  (8):  TRUE: Daylight Saving Time
  
! BEISPIEL
!         printf("Today is %s\n", ({ "Sonntag", "Montag", "Dienstag",
              "Mittwoch", "Donnerstag", "Freitag", "Samstag"})
              [localtime()[TM_WDAY]]);
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.9
  
  SIEHE AUCH
!     ctime(E), gmtime(E), time(E), utime(E)
--- 27,39 ----
              int TM_YDAY   (7):  Tag im Jahr (0..365)
              inz TM_ISDST  (8):  TRUE: Daylight Saving Time
  
! BEISPIELE
!         printf("Heute ist %s\n", ({ "Sonntag", "Montag", "Dienstag",
              "Mittwoch", "Donnerstag", "Freitag", "Samstag"})
              [localtime()[TM_WDAY]]);
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
!         ctime(E), gmtime(E), time(E), utime(E)
diff -c efun.de.orig/log.de efun.de/log.de
*** efun.de.orig/log.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/log.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,10 ****
  SYNOPSIS
!         float log(int|float arg);
  
  BESCHREIBUNG
          Liefert den natuerlichen Logarithmus von <arg>.
  
! AENDERUNGEN
          LDMud 3.2.9 fuehrte Integers als Argumente ein.
  
  SIEHE AUCH
--- 1,10 ----
  SYNOPSIS
!         float log(int|float arg)
  
  BESCHREIBUNG
          Liefert den natuerlichen Logarithmus von <arg>.
  
! GESCHICHTE
          LDMud 3.2.9 fuehrte Integers als Argumente ein.
  
  SIEHE AUCH
diff -c efun.de.orig/lower_case.de efun.de/lower_case.de
*** efun.de.orig/lower_case.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/lower_case.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         string lower_case(string str);
  
  BESCHREIBUNG
          Konvertiert alle Zeichen in <str> in Kleinbuchstaben und liefert den
          neuen String.
  
! BEISPIEL
          lower_case("Hallo WeLT!") -> "hallo welt!"
  
  SIEHE AUCH
--- 1,11 ----
  SYNOPSIS
!         string lower_case(string str)
  
  BESCHREIBUNG
          Konvertiert alle Zeichen in <str> in Kleinbuchstaben und liefert den
          neuen String.
  
! BEISPIELE
          lower_case("Hallo WeLT!") -> "hallo welt!"
  
  SIEHE AUCH
diff -c efun.de.orig/m_add.de efun.de/m_add.de
*** efun.de.orig/m_add.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_add.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mapping m_add(mapping map, mixed key, [mixed data, ...]);
  
  BESCHREIBUNG
          Fuegt einen neuen Eintrag mit Index <key> zum Mapping <map> hinzu
--- 1,5 ----
  SYNOPSIS
!         mapping m_add(mapping map, mixed key, [mixed data, ...])
  
  BESCHREIBUNG
          Fuegt einen neuen Eintrag mit Index <key> zum Mapping <map> hinzu
***************
*** 21,27 ****
          apply(#'m_add, m, "baz", ({ 4, 5 }))
          --> ([ "foo":1;2, "bar":1;0, "baz":4;5 ])
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
--- 21,27 ----
          apply(#'m_add, m, "baz", ({ 4, 5 }))
          --> ([ "foo":1;2, "bar":1;0, "baz":4;5 ])
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
diff -c efun.de.orig/make_shared_string.de efun.de/make_shared_string.de
*** efun.de.orig/make_shared_string.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/make_shared_string.de	2009-11-02 23:09:28.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string make_shared_string (string str);
  
  BESCHREIBUNG
          Fuegt <str> in die Liste der gemeinsam verwendeten String des Spiels
--- 1,5 ----
  SYNOPSIS
!         string make_shared_string(string str)
  
  BESCHREIBUNG
          Fuegt <str> in die Liste der gemeinsam verwendeten String des Spiels
***************
*** 9,17 ****
          spart dies Speicher. Keys von Alists und Mappings sind immer gemeinsam
          verwendete Strings.
  
! BUGS
          Ein besseres Stringhandling im Driver sollte diese Efun ueberfluessig
          machen.
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.6, auf Vorschlag von TubMud.
--- 9,17 ----
          spart dies Speicher. Keys von Alists und Mappings sind immer gemeinsam
          verwendete Strings.
  
! FEHLER
          Ein besseres Stringhandling im Driver sollte diese Efun ueberfluessig
          machen.
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.6, auf Vorschlag von Tubmud.
diff -c efun.de.orig/m_allocate.de efun.de/m_allocate.de
*** efun.de.orig/m_allocate.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_allocate.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mapping m_allocate(int size, int width);
  
  BESCHREIBUNG
          Die Funktion reserviert Speicher fuer ein Mapping. <size> ist die
--- 1,6 ----
  SYNOPSIS
!         mapping m_allocate(int size)
!         mapping m_allocate(int size, int width)
  
  BESCHREIBUNG
          Die Funktion reserviert Speicher fuer ein Mapping. <size> ist die
***************
*** 29,35 ****
             fuer 3 Eintraege.
         ([:2*3]) -> entspricht m_allocate(0,6).
  
! AENDERUNGEN
          Umbenannt von allocate_mapping() in LDMud 3.2.6.
          Die ([:<width>]) Notation wurde in 3.2.9 eingefuehrt.
  
--- 30,36 ----
             fuer 3 Eintraege.
         ([:2*3]) -> entspricht m_allocate(0,6).
  
! GESCHICHTE
          Umbenannt von allocate_mapping() in LDMud 3.2.6.
          Die ([:<width>]) Notation wurde in 3.2.9 eingefuehrt.
  
diff -c efun.de.orig/map_array.de efun.de/map_array.de
*** efun.de.orig/map_array.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/map_array.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,7 ****
  VERALTET
  SYNOPSIS
!         mixed *map_array(mixed *arr, string fun, string|object ob, mixed extra);
!         mixed *map_array(mixed *arr, closure cl, mixed extra);
  
  BESCHREIBUNG
          Liefert ein Array, das die Eintraege von <arr> enthaelt, die mit
--- 1,7 ----
  VERALTET
  SYNOPSIS
!         mixed * map_array(mixed *arr, string fun, string|object ob, mixed extra)
!         mixed * map_array(mixed *arr, closure cl, mixed extra)
  
  BESCHREIBUNG
          Liefert ein Array, das die Eintraege von <arr> enthaelt, die mit
***************
*** 21,34 ****
          Das <extra> Argument ist optional und darf keine geschuetzten
          Referenzen wie &(i[0]) enthalten.
  
! BEISPIEL
!         string ask_for_uid(object obj)
!         {
             return getuid(obj);
          }
  
!         void func()
!         {
             string *names;
             names = map_array(users(), "ask_for_uid", this_object());
             /* gleichwertig, aber etwas kleiner und schneller dies: */
--- 21,32 ----
          Das <extra> Argument ist optional und darf keine geschuetzten
          Referenzen wie &(i[0]) enthalten.
  
! BEISPIELE
!         string ask_for_uid(object obj) {
             return getuid(obj);
          }
  
!         void func() {
             string *names;
             names = map_array(users(), "ask_for_uid", this_object());
             /* gleichwertig, aber etwas kleiner und schneller dies: */
***************
*** 39,45 ****
          Dies erzeugt ein Array, das alle UIDs der momentan vorhandenen
          Benutzer enthaelt.
  
! AENDERUNGEN
          Seit LDMud 3.2.6 abgeloest durch map().
          Seit LDMud 3.2.9 nur noch verfuegbar, wenn der Treiber mit
              USE_DEPRECATED kompiliert wurde.
--- 37,43 ----
          Dies erzeugt ein Array, das alle UIDs der momentan vorhandenen
          Benutzer enthaelt.
  
! GESCHICHTE
          Seit LDMud 3.2.6 abgeloest durch map().
          Seit LDMud 3.2.9 nur noch verfuegbar, wenn der Treiber mit
              USE_DEPRECATED kompiliert wurde.
diff -c efun.de.orig/map.de efun.de/map.de
*** efun.de.orig/map.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/map.de	2009-11-02 23:10:48.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         mixed *map(mixed *arg, string func, string|object ob, mixed extra...);
!         mixed *map(mixed *arg, closure cl, mixed extra...);
!         mixed *map(mixed *arg, mapping m);
! 
!         mapping map(mapping arg, string func, string|object ob,
!             mixed extra...);
!         mapping map(mapping arg, closure cl, mixed extra...);
  
  BESCHREIBUNG
          Ruft die Funktion <ob>-><func>() bzw. die Closure <cl> fuer jedes
--- 1,10 ----
  SYNOPSIS
!         mixed * map(mixed *arg, string func, string|object ob, mixed extra...)
!         mixed * map(mixed *arg, closure cl, mixed extra...)
!         mixed * map(mixed *arg, mapping m)
! 
!         mapping map(mapping arg, string func, string|object ob, mixed extra...)
!         mapping map(mapping arg, closure cl, mixed extra...)
  
  BESCHREIBUNG
          Ruft die Funktion <ob>-><func>() bzw. die Closure <cl> fuer jedes
***************
*** 60,81 ****
          Mappings (Mappings mit mehreren Werten pro Key und Mappings von Arrays)
          gleich behandelt werden koennen.
  
! BEISPIEL
          arr = ({ 1, 2, 3, 4 });
          m = ([ 1:-1, 3:-3 ]);
  
          map(arr, #'%, 2)  --> liefert ({ 1, 0, 1, 0 })
          map(arr, m)       --> liefert ([ -1, 2, -3, 4 })
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.6, loest map_array() ab.
!         LDMud 3.2.8 fuehrt neu die Moeglichkeit ein, ein Array durch ein
!         Mapping zu mappen.
! 
! ANMERKUNG
          map() auf Arrays angewandt verhaelt sich wie map_array(), auf Mappings
          angewandt hingegen verhaelt es sich wie eine Verallgemeinerung von
          map_indices().
  
  SIEHE AUCH
          filter(E), filter_indices(E), map_indices(E), map_objects(E)
--- 59,80 ----
          Mappings (Mappings mit mehreren Werten pro Key und Mappings von Arrays)
          gleich behandelt werden koennen.
  
! BEISPIELE
          arr = ({ 1, 2, 3, 4 });
          m = ([ 1:-1, 3:-3 ]);
  
          map(arr, #'%, 2)  --> liefert ({ 1, 0, 1, 0 })
          map(arr, m)       --> liefert ([ -1, 2, -3, 4 })
  
! ANMERKUNGEN
          map() auf Arrays angewandt verhaelt sich wie map_array(), auf Mappings
          angewandt hingegen verhaelt es sich wie eine Verallgemeinerung von
          map_indices().
  
+ GESCHICHTE
+         Eingefuehrt in LDMud 3.2.6, loest map_array() ab.
+         LDMud 3.2.8 fuehrt neu die Moeglichkeit ein, ein Array durch ein
+         Mapping zu mappen.
+ 
  SIEHE AUCH
          filter(E), filter_indices(E), map_indices(E), map_objects(E)
diff -c efun.de.orig/map_indices.de efun.de/map_indices.de
*** efun.de.orig/map_indices.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/map_indices.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,8 ****
  VERALTET
  SYNOPSIS
          mapping map_indices(mapping m, string fun, string|object ob,
!             mixed extra, ...);
!         mapping map_indices(mapping m, closure cl, mixed extra, ...);
  
  BESCHREIBUNG
          Fuer jedes Element des Mappings wird ob->func() bzw. die Closure <cl>
--- 1,8 ----
  VERALTET
  SYNOPSIS
          mapping map_indices(mapping m, string fun, string|object ob,
!                                                      mixed extra, ...)
!         mapping map_indices(mapping m, closure cl, mixed extra, ...)
  
  BESCHREIBUNG
          Fuer jedes Element des Mappings wird ob->func() bzw. die Closure <cl>
***************
*** 21,31 ****
          werden ignoriert. Das Verhalten von map_indices() unterscheidet sich
          also vom Verhalten von map_array().
  
! BEISPIEL
          m = mkmapping(users());
          m = map_indices(m, #'envrionment);
  
! AENDERUNGEN
          In LDMud 3.2.6 umbenannt von map_mapping() und durch map() ergaenzt.
  
  SIEHE AUCH
--- 21,31 ----
          werden ignoriert. Das Verhalten von map_indices() unterscheidet sich
          also vom Verhalten von map_array().
  
! BEISPIELE
          m = mkmapping(users());
          m = map_indices(m, #'envrionment);
  
! GESCHICHTE
          In LDMud 3.2.6 umbenannt von map_mapping() und durch map() ergaenzt.
  
  SIEHE AUCH
diff -c efun.de.orig/map_mapping.de efun.de/map_mapping.de
*** efun.de.orig/map_mapping.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/map_mapping.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,8 ****
  VERALTET
  SYNOPSIS
          mapping map_mapping(mapping m, string fun, string|object ob,
!             mixed extra, ...);
!         mapping map_mapping(mapping m, closure cl, mixed extra, ...);
  
  BESCHREIBUNG
          Fuer jedes Element des Mappings wird ob->func() bzw. die Closure <cl>
--- 1,8 ----
  VERALTET
  SYNOPSIS
          mapping map_mapping(mapping m, string fun, string|object ob,
!                                                      mixed extra, ...)
!         mapping map_mapping(mapping m, closure cl, mixed extra, ...)
  
  BESCHREIBUNG
          Fuer jedes Element des Mappings wird ob->func() bzw. die Closure <cl>
***************
*** 21,31 ****
          werden ignoriert. Das Verhalten von map_indices() unterscheidet sich
          also vom Verhalten von map_array().
  
! BEISPIEL
          m = mkmapping(users());
          m = map_mapping(m, #'envrionment);
  
! AENDERUNGEN
          In LDMud 3.2.6 umbenannt zu map_indices().
          Seit LDMued 3.2.9 ist map_mapping() nur noch verfuegbar, wenn der
              Treiber mit USE_DEPRECATED kompiliert wurde.
--- 21,31 ----
          werden ignoriert. Das Verhalten von map_indices() unterscheidet sich
          also vom Verhalten von map_array().
  
! BEISPIELE
          m = mkmapping(users());
          m = map_mapping(m, #'envrionment);
  
! GESCHICHTE
          In LDMud 3.2.6 umbenannt zu map_indices().
          Seit LDMued 3.2.9 ist map_mapping() nur noch verfuegbar, wenn der
              Treiber mit USE_DEPRECATED kompiliert wurde.
diff -c efun.de.orig/map_objects.de efun.de/map_objects.de
*** efun.de.orig/map_objects.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/map_objects.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed *map_objects(object *arr, string fun, mixed extra, ...);
  
  BESCHREIBUNG
          map_objects() verhaelt sich aehnlich wie map(), ruft jedoch
--- 1,5 ----
  SYNOPSIS
!         mixed * map_objects(object *arr, string fun, mixed extra, ...)
  
  BESCHREIBUNG
          map_objects() verhaelt sich aehnlich wie map(), ruft jedoch
diff -c efun.de.orig/mapping_contains.de efun.de/mapping_contains.de
*** efun.de.orig/mapping_contains.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/mapping_contains.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,6 ****
  VERALTET
  SYNOPSIS
!         int mapping_contains(mixed &data1, ... &dataN, map, key);
  
  BESCHREIBUNG
          Wenn das Mapping <map> den Key <key> enthaelt, werden die
--- 1,6 ----
  VERALTET
  SYNOPSIS
!         int mapping_contains(mixed &data1, ... &dataN, map, key)
  
  BESCHREIBUNG
          Wenn das Mapping <map> den Key <key> enthaelt, werden die
***************
*** 13,19 ****
          moeglich, diese Funktion auf ein 0-Wert Mapping anzuwenden. In
          diesem Fall hat sie die gleiche Auswirkung wie member().
  
! AENDERUNGEN
          Umbenannt zu m_contains() in LDMud 3.2.6.
          Seit LDMud 3.2.9 ist mapping_contains() nur noch verfuegbar, wenn
              der Treiber mit USE_DEPRECATED kompiliert wurde.
--- 13,19 ----
          moeglich, diese Funktion auf ein 0-Wert Mapping anzuwenden. In
          diesem Fall hat sie die gleiche Auswirkung wie member().
  
! GESCHICHTE
          Umbenannt zu m_contains() in LDMud 3.2.6.
          Seit LDMud 3.2.9 ist mapping_contains() nur noch verfuegbar, wenn
              der Treiber mit USE_DEPRECATED kompiliert wurde.
diff -c efun.de.orig/master.de efun.de/master.de
*** efun.de.orig/master.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/master.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object master();
!         object master(int dont_load);
  
  BESCHREIBUNG
          Die Funktion liefert das Masterobjekt.
--- 1,6 ----
  SYNOPSIS
!         object master()
!         object master(int dont_load)
  
  BESCHREIBUNG
          Die Funktion liefert das Masterobjekt.
***************
*** 10,17 ****
          master() nur das Masterobjekt oder 0, falls das aktuelle Masterobjekt
          zerstoert wurde.
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.10
  
  SIEHE AUCH
          master(M)
--- 10,17 ----
          master() nur das Masterobjekt oder 0, falls das aktuelle Masterobjekt
          zerstoert wurde.
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
          master(M)
diff -c efun.de.orig/max.de efun.de/max.de
*** efun.de.orig/max.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/max.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,23 ****
  SYNOPSIS
!         string max(string arg, ...);
!         string max(string *arg);
  
!         int|float max(int|float arg, ...);
!         int|float max(int|float *arg);
  
  BESCHREIBUNG
          Die Funktion liefert den groessten Wert aller <arg> und liefert ihn
          zurueck. Wird max() nur mit einem Array aufgerufen wird (das nicht
          leer sein darf), liefert die Funktion das groesste Element aus <arg>.
  
! BEISPIEL
          max(1)                     - liefert 1
          max(1, 1.1)                - liefert 1.1
          max("foo", "bar")          - liefert "foo"
          max( ({ "foo", "bar" }) )  - liefert "foo"
  
! AENDERUNGEN
!         Eingefuehrt in LDMued 3.2.9.
  
  SIEHE AUCH
          min(E)
--- 1,23 ----
  SYNOPSIS
!         string max(string arg, ...)
!         string max(string *arg)
  
!         int|float max(int|float arg, ...)
!         int|float max(int|float *arg)
  
  BESCHREIBUNG
          Die Funktion liefert den groessten Wert aller <arg> und liefert ihn
          zurueck. Wird max() nur mit einem Array aufgerufen wird (das nicht
          leer sein darf), liefert die Funktion das groesste Element aus <arg>.
  
! BEISPIELE
          max(1)                     - liefert 1
          max(1, 1.1)                - liefert 1.1
          max("foo", "bar")          - liefert "foo"
          max( ({ "foo", "bar" }) )  - liefert "foo"
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
          min(E)
diff -c efun.de.orig/m_contains.de efun.de/m_contains.de
*** efun.de.orig/m_contains.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_contains.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int m_contains(mixed &data1, ... , &dataN, mapping map, mixed key);
  
  BESCHREIBUNG
          Wenn <map> den Key <key> enthaelt, werden die entsprechenden Werte
--- 1,5 ----
  SYNOPSIS
!         int m_contains(mixed &data1, ... , &dataN, mapping map, mixed key)
  
  BESCHREIBUNG
          Wenn <map> den Key <key> enthaelt, werden die entsprechenden Werte
***************
*** 11,17 ****
          Man kann diese Funktion auch fuer 0-Wert Mappings verwenden, wobei
          sie den gleichen Effekt wie member(E) hat.
  
! AENDERUNGEN
          Umbenannt von 'mapping_contains' in LDMud 3.2.6.
  
  SIEHE AUCH
--- 11,17 ----
          Man kann diese Funktion auch fuer 0-Wert Mappings verwenden, wobei
          sie den gleichen Effekt wie member(E) hat.
  
! GESCHICHTE
          Umbenannt von 'mapping_contains' in LDMud 3.2.6.
  
  SIEHE AUCH
diff -c efun.de.orig/md5.de efun.de/md5.de
*** efun.de.orig/md5.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/md5.de	2009-11-02 23:11:40.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         string md5 (string arg [ , int iterations ] )
!         string md5 (int *  arg [ , int iterations ] )
  
  BESCHREIBUNG
          Berechnet den MD5-Hashwert von <arg>.
--- 1,6 ----
  SYNOPSIS
!         string md5(string arg [, int iterations])
!         string md5(int *  arg [, int iterations])
  
  BESCHREIBUNG
          Berechnet den MD5-Hashwert von <arg>.
***************
*** 13,27 ****
          Driver den Digest mit diese Anzahl an Wiederholungen. Fehlt die
          Angabe, fuehrt der Driver die Digest-Berechnung einmal aus.
  
! BEISPIEL
          string s;
  
          s = md5("Hallo");
          s = md5( ({ 'H', 'a', 'l', 'l', 'o' })
          s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.9
          LDMud 3.2.12 fuehrte Zaehlenarrays als Argument ein, also auch
            die Anzahl der Wiederholungen.
  
--- 13,27 ----
          Driver den Digest mit diese Anzahl an Wiederholungen. Fehlt die
          Angabe, fuehrt der Driver die Digest-Berechnung einmal aus.
  
! BEISPIELE
          string s;
  
          s = md5("Hallo");
          s = md5( ({ 'H', 'a', 'l', 'l', 'o' })
          s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.9.
          LDMud 3.2.12 fuehrte Zaehlenarrays als Argument ein, also auch
            die Anzahl der Wiederholungen.
  
diff -c efun.de.orig/m_delete.de efun.de/m_delete.de
*** efun.de.orig/m_delete.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_delete.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mapping m_delete(mapping map, mixed key);
  
  BESCHREIBUNG
          Loescht den Eintrag mit dem Index <key> aus dem Mapping <map> und
--- 1,5 ----
  SYNOPSIS
!         mapping m_delete(mapping map, mixed key)
  
  BESCHREIBUNG
          Loescht den Eintrag mit dem Index <key> aus dem Mapping <map> und
diff -c efun.de.orig/member_array.de efun.de/member_array.de
*** efun.de.orig/member_array.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/member_array.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,7 ****
  VERALTET
  SYNOPSIS
!         int member_array(mixed item, mixed *arr);
!         int member_array(mixed item, string arr);
  
  BESCHREIBUNG
          Liefert den Index des ersten Auftretens von <item> in <arr> oder
--- 1,7 ----
  VERALTET
  SYNOPSIS
!         int member_array(mixed item, mixed *arr)
!         int member_array(mixed item, string arr)
  
  BESCHREIBUNG
          Liefert den Index des ersten Auftretens von <item> in <arr> oder
***************
*** 16,20 ****
          Seit LDMued 3.2.9 ist member_array() nur noch verfuegbar, wenn der
              Treiber mit USE_DEPRECATED kompiliert wurde.
  
! VERGLEICHE
          member(E), alists(LPC), mappings(LPC), assoc(E), slice_array(E)
--- 16,20 ----
          Seit LDMued 3.2.9 ist member_array() nur noch verfuegbar, wenn der
              Treiber mit USE_DEPRECATED kompiliert wurde.
  
! SIEHE AUCH
          member(E), alists(LPC), mappings(LPC), assoc(E), slice_array(E)
diff -c efun.de.orig/member.de efun.de/member.de
*** efun.de.orig/member.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/member.de	2009-11-02 23:12:33.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         int member(mixed *array, mixed elem);
!         int member(mapping map, mixed key);
!         int member(string s, int elem);
  
  BESCHREIBUNG
          Fuer Arrays und String liefert member() den Index des ersten
--- 1,7 ----
  SYNOPSIS
!         int member(mixed *array, mixed elem)
!         int member(mapping map, mixed key)
!         int member(string s, int elem)
  
  BESCHREIBUNG
          Fuer Arrays und String liefert member() den Index des ersten
***************
*** 11,15 ****
          Fuer Mapping prueft member(), ob <key> in <map> enthalten ist und
          liefert 1 zurueck falls ja, 0 sonst.
  
! VERGLEICHE
          rmember(E), mappings(LPC)
--- 11,15 ----
          Fuer Mapping prueft member(), ob <key> in <map> enthalten ist und
          liefert 1 zurueck falls ja, 0 sonst.
  
! SIEHE AUCH
          rmember(E), mappings(LPC)
diff -c efun.de.orig/m_entry.de efun.de/m_entry.de
*** efun.de.orig/m_entry.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_entry.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         *mixed m_entry(mapping map, mixed key);
  
  BESCHREIBUNG
          Durchsucht das Mapping <map> nach dem Eintrag mit Index <key> und
--- 1,5 ----
  SYNOPSIS
!         mixed * m_entry(mapping map, mixed key)
  
  BESCHREIBUNG
          Durchsucht das Mapping <map> nach dem Eintrag mit Index <key> und
***************
*** 8,24 ****
          Wenn <map> keinen Eintrag mit Index <key> enthaelt, liefert
          m_entry() 0.
  
! BEISPIEL
          mapping m = ([1:"bla":-1, 2:"fasel":-2 ])
          m_entry(m, 0) -> 0
          m_entry(m, 1) -> ({"bla", -1})
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.10.
! 
! ANMEKRUNG
          Mit der Efun m_add() koennen alle Werte eines Eintrages auf einmal
          addiert werden.
  
  SIEHE AUCH
          m_add(E), m_contains(E), mappings(LPC), member(E)
--- 8,24 ----
          Wenn <map> keinen Eintrag mit Index <key> enthaelt, liefert
          m_entry() 0.
  
! BEISPIELE
          mapping m = ([1:"bla":-1, 2:"fasel":-2 ])
          m_entry(m, 0) -> 0
          m_entry(m, 1) -> ({"bla", -1})
  
! ANMERKUNGEN
          Mit der Efun m_add() koennen alle Werte eines Eintrages auf einmal
          addiert werden.
  
+ GESCHICHTE
+         Eingefuehrt in LDMud 3.2.10.
+ 
  SIEHE AUCH
          m_add(E), m_contains(E), mappings(LPC), member(E)
diff -c efun.de.orig/min.de efun.de/min.de
*** efun.de.orig/min.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/min.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,21 ****
  SYNOPSIS
!         string min(string arg, ... );
!         string min(string *arg_array);
!         int|float min(int|float arg, ...);
!         int|flaot min(int|float *arg_array);
  
  BESCHREIBUNG
          Liefert das kleinste der Argumente <arg>. Wenn min() fuer ein
          einzelnes (nicht leeres) Array aufgerufen wird, liefert min() das
          kleinste Element im Array.
  
! BEISPIEL
          min(1)                      -> liefert 1
          min(1, -1.1)                -> liefert -1.1
          min("bla", "fasel")         -> liefert "bla"
          min( ({ "bla", "fasel" }) ) -> liefert "bla"
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
--- 1,21 ----
  SYNOPSIS
!         string    min(string arg, ... )
!         string    min(string *arg_array)
!         int|float min(int|float arg, ...)
!         int|float min(int|float *arg_array)
  
  BESCHREIBUNG
          Liefert das kleinste der Argumente <arg>. Wenn min() fuer ein
          einzelnes (nicht leeres) Array aufgerufen wird, liefert min() das
          kleinste Element im Array.
  
! BEISPIELE
          min(1)                      -> liefert 1
          min(1, -1.1)                -> liefert -1.1
          min("bla", "fasel")         -> liefert "bla"
          min( ({ "bla", "fasel" }) ) -> liefert "bla"
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
diff -c efun.de.orig/m_indices.de efun.de/m_indices.de
*** efun.de.orig/m_indices.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_indices.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         *mixed m_indices(mapping map);
  
  BESCHREIBUNG
          Liefert ein Array mit den Indizes von <map>.
--- 1,5 ----
  SYNOPSIS
!         mixed * m_indices(mapping map)
  
  BESCHREIBUNG
          Liefert ein Array mit den Indizes von <map>.
diff -c efun.de.orig/mkdir.de efun.de/mkdir.de
*** efun.de.orig/mkdir.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/mkdir.de	2009-11-02 22:26:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int mkdir(string path);
  
  BESCHREIBUNG
          Erstellt ein Verzeichnis <path> und liefert 1, wenn das Verzeichnis
--- 1,5 ----
  SYNOPSIS
!         int mkdir(string path)
  
  BESCHREIBUNG
          Erstellt ein Verzeichnis <path> und liefert 1, wenn das Verzeichnis
diff -c efun.de.orig/mkmapping.de efun.de/mkmapping.de
*** efun.de.orig/mkmapping.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/mkmapping.de	2009-11-02 23:14:04.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         mapping mkmapping(mixed *arr1, mixed *arr2, mixed *arr3, ...);
  
  BESCHREIBUNG
          Liefert ein Mapping mit Keys aus <arr1> und Datenelementen aus
          <arr2>, <arr3>.... Dem Key <arr1[0]> werden die Datenelemente
          <arr2[0]>, <arr3[0]>... zugeordnet. Wenn die Datenarrays
!         ungleich gross sind, enthaelt das Mapping nur so viele Eintraege,
          wie im kleinsten Datenarray enthalten sind.
  
          Gewoehnlich werden Mappings erweitert, indem einfach neue Elemente
--- 1,11 ----
  SYNOPSIS
!         mapping mkmapping(mixed *arr1, mixed *arr2, mixed *arr3, ...)
  
  BESCHREIBUNG
          Liefert ein Mapping mit Keys aus <arr1> und Datenelementen aus
          <arr2>, <arr3>.... Dem Key <arr1[0]> werden die Datenelemente
          <arr2[0]>, <arr3[0]>... zugeordnet. Wenn die Datenarrays
!         ungleich gross sind, enthaelt das Mapping nur so viele Eintraege
          wie im kleinsten Datenarray enthalten sind.
  
          Gewoehnlich werden Mappings erweitert, indem einfach neue Elemente
***************
*** 13,24 ****
          ungefaehr benoetigte Speicherplatz bereits vorher bekannt ist,
          um so den Overhead bei der Speicherallokation zu minimieren.
          Allenfalls zu viel allozierter Speicher wird freigegeben, sobald
!         die Funktion, die die mkmapping() Anweisung enthaelt, beendet ist.
  
! BESIPIEL
          mkmapping( ({ 1, 2 }), ({ 10, 11 }), ({ 20, 21, 22}));
            liefert ([ 1:10;20, 2:11;21 ])
  
! VERGLEICHE
          mappings(LPC), mappingp(E), m_indices(E), m_values(E),
          m_add(E), m_delete(E), sizeof(E), widthof(E), unmkmapping(E).
--- 13,24 ----
          ungefaehr benoetigte Speicherplatz bereits vorher bekannt ist,
          um so den Overhead bei der Speicherallokation zu minimieren.
          Allenfalls zu viel allozierter Speicher wird freigegeben, sobald
!         die Funktion, die die mkmapping()-Anweisung enthaelt, beendet ist.
  
! BESIPIELE
          mkmapping( ({ 1, 2 }), ({ 10, 11 }), ({ 20, 21, 22}));
            liefert ([ 1:10;20, 2:11;21 ])
  
! SIEHE AUCH
          mappings(LPC), mappingp(E), m_indices(E), m_values(E),
          m_add(E), m_delete(E), sizeof(E), widthof(E), unmkmapping(E).
diff -c efun.de.orig/move_object.de efun.de/move_object.de
*** efun.de.orig/move_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/move_object.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         void move_object(mixed item, mixed dest);
  
  BESCHREIBUNG
          <item> wird in die neue Umgebung <dest> bewegt. <item> und <dest>
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         void move_object(mixed item, mixed dest)
  
  BESCHREIBUNG
          <item> wird in die neue Umgebung <dest> bewegt. <item> und <dest>
***************
*** 10,16 ****
          Mudlib enthalten und verwendet dort die M_MOVE_OBJECT0/1 Treiber Hooks.
          move_object() kann so auch eine simul-efun sein.
  
!         In der traditionellen Implemenierung war <item> im Compat Modus auf
          das aufrufende Objekt beschraenkt.
  
  SIEHE AUCH
--- 10,16 ----
          Mudlib enthalten und verwendet dort die M_MOVE_OBJECT0/1 Treiber Hooks.
          move_object() kann so auch eine simul-efun sein.
  
!         In der traditionellen Implemenierung war <item> im COMPAT-Modus auf
          das aufrufende Objekt beschraenkt.
  
  SIEHE AUCH
diff -c efun.de.orig/m_reallocate.de efun.de/m_reallocate.de
*** efun.de.orig/m_reallocate.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_reallocate.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mapping m_reallocate(mapping m, int width);
  
  BESCHREIBUNG
          Erzeugt ein neues Mapping mit <width> Werten pro Key und fuellt das
--- 1,5 ----
  SYNOPSIS
!         mapping m_reallocate(mapping m, int width)
  
  BESCHREIBUNG
          Erzeugt ein neues Mapping mit <width> Werten pro Key und fuellt das
***************
*** 10,23 ****
  
          Das urspruengliche Mapping <m> wird nicht veraendert.
  
! BEISPIEL
          mapping m = ([ "foo":1;2;3, "bar":4;5;6 ])
  
          m_reallocate(m, 1) --> liefert ([ "foo":1,       "bar:4 ])
          m_reallocate(m, 4) --> liefert ([ "foo":1;2;3;0, "bar:4;5;6;0 ])
  
! AENDERUNGEN
!     Eingefuehrt in LDMud 3.2.6, auf Vorschlag von TubMud.
  
  SIEHE AUCH
          m_allocate(E), m_values(E), widthof(E)
--- 10,23 ----
  
          Das urspruengliche Mapping <m> wird nicht veraendert.
  
! BEISPIELE
          mapping m = ([ "foo":1;2;3, "bar":4;5;6 ])
  
          m_reallocate(m, 1) --> liefert ([ "foo":1,       "bar:4 ])
          m_reallocate(m, 4) --> liefert ([ "foo":1;2;3;0, "bar:4;5;6;0 ])
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.6, auf Vorschlag von Tubmud.
  
  SIEHE AUCH
          m_allocate(E), m_values(E), widthof(E)
diff -c efun.de.orig/m_sizeof.de efun.de/m_sizeof.de
*** efun.de.orig/m_sizeof.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_sizeof.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,11 ****
  VERALTET
  SYNOPSIS
!         int m_sizeof(mapping map);
  
  BESCHREIBUNG
          Liefert die Anzahl Indizes im Mapping <map>. Diese Funktion ist
          ein Alias fuer sizeof().
  
! AENDERUNGEN
          Seit LDMud 3.2.9 ist m_sizeof() nur noch verfuegbar, wenn der Treiber
              mit USE_DEPRECATED kompiliert wurde.
--- 1,11 ----
  VERALTET
  SYNOPSIS
!         int m_sizeof(mapping map)
  
  BESCHREIBUNG
          Liefert die Anzahl Indizes im Mapping <map>. Diese Funktion ist
          ein Alias fuer sizeof().
  
! GESCHICHTE
          Seit LDMud 3.2.9 ist m_sizeof() nur noch verfuegbar, wenn der Treiber
              mit USE_DEPRECATED kompiliert wurde.
diff -c efun.de.orig/m_values.de efun.de/m_values.de
*** efun.de.orig/m_values.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/m_values.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         *mixed m_values(mapping map);
!         *mixed m_values(mapping map, int index);
  
  BESCHREIBUNG
          Liefert ein Array mit den Werten des Mappings <map>. Wenn <index>
--- 1,6 ----
  SYNOPSIS
!         mixed * m_values(mapping map)
!         mixed * m_values(mapping map, int index)
  
  BESCHREIBUNG
          Liefert ein Array mit den Werten des Mappings <map>. Wenn <index>
***************
*** 9,15 ****
  
  BEISPIELE
          mapping m = ([ "bla":1;2;3 , "fasel":4;5;6 , "schnack":7;8;9 ]);
!         m_values(m)    -> liefert ({ 1 , 4 , 7 }) (uU. permutiert)
          m_values(m, 0) -> liefert ({ 1 , 4 , 7 }) (ditto)
          m_values(m, 1) -> liefert ({ 2 , 5 , 8 }) (ditto)
  
--- 9,15 ----
  
  BEISPIELE
          mapping m = ([ "bla":1;2;3 , "fasel":4;5;6 , "schnack":7;8;9 ]);
!         m_values(m)    -> liefert ({ 1 , 4 , 7 }) (u.U. permutiert)
          m_values(m, 0) -> liefert ({ 1 , 4 , 7 }) (ditto)
          m_values(m, 1) -> liefert ({ 2 , 5 , 8 }) (ditto)
  
diff -c efun.de.orig/negate.de efun.de/negate.de
*** efun.de.orig/negate.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/negate.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int negate(int arg);
!         float negate(float arg);
  
  BESCHREIBUNG
          Liefert den negativen Wert von <arg>.
--- 1,6 ----
  SYNOPSIS
!         int   negate(int arg)
!         float negate(float arg)
  
  BESCHREIBUNG
          Liefert den negativen Wert von <arg>.
diff -c efun.de.orig/next_bit.de efun.de/next_bit.de
*** efun.de.orig/next_bit.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/next_bit.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int next_bit(string str, int start);
!         int next_bit(string str, int start, int find_cleared);
  
  BESCHREIBUNG
          Liefert den Zahlenwert des naechsten Bits im Bitstring <bit> nach
--- 1,6 ----
  SYNOPSIS
!         int next_bit(string str, int start)
!         int next_bit(string str, int start, int find_cleared)
  
  BESCHREIBUNG
          Liefert den Zahlenwert des naechsten Bits im Bitstring <bit> nach
***************
*** 16,22 ****
          ist der Leerschlag " " mit dem Wert 0. Das erste Zeichen im String
          ist jenes mit den niedrigsten Bits (0-5).
  
! BEISPIEL
          string s;
          int p;
  
--- 16,22 ----
          ist der Leerschlag " " mit dem Wert 0. Das erste Zeichen im String
          ist jenes mit den niedrigsten Bits (0-5).
  
! BEISPIELE
          string s;
          int p;
  
diff -c efun.de.orig/next_inventory.de efun.de/next_inventory.de
*** efun.de.orig/next_inventory.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/next_inventory.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object next_inventory();
!         object next_inventory(object ob);
  
  BESCHREIBUNG
          Liefert das naechste Objekt aus dem Inventar von <ob>. Wird <ob>
--- 1,6 ----
  SYNOPSIS
!         object next_inventory()
!         object next_inventory(object ob)
  
  BESCHREIBUNG
          Liefert das naechste Objekt aus dem Inventar von <ob>. Wird <ob>
diff -c efun.de.orig/notify_fail.de efun.de/notify_fail.de
*** efun.de.orig/notify_fail.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/notify_fail.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 19,25 ****
          command()), und ein notify_fail() in einem Unterkommando
          hat keinen Einfluss auf das uebergeordnete Kommando.
  
! BEISPIEL
          Verwendet man
  
                  return notify_fail(message);
--- 19,25 ----
          command()), und ein notify_fail() in einem Unterkommando
          hat keinen Einfluss auf das uebergeordnete Kommando.
  
! BEISPIELE
          Verwendet man
  
                  return notify_fail(message);
diff -c efun.de.orig/object_info.de efun.de/object_info.de
*** efun.de.orig/object_info.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/object_info.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,9 ****
  GESCHUETZT
  SYNOPSIS
!         #include <sys/objectinfo.h>
  
!         *mixed object_info(object ob, int what);
!         *mixed object_info(object ob, int what, int index);
  
  BESCHREIBUNG
          Liefert einige interne Informationen ueber das Objekt <ob> in Form
--- 1,9 ----
  GESCHUETZT
  SYNOPSIS
!         #include <objectinfo.h>
  
!         mixed * object_info(object ob, int what)
!         mixed * object_info(object ob, int what, int index)
  
  BESCHREIBUNG
          Liefert einige interne Informationen ueber das Objekt <ob> in Form
***************
*** 15,23 ****
          Position <index> stehen wuerde.
  
          Die moeglichen Werte fuer <what> und die Indizes des gelieferten
!         Arrays sind in <objectinfo.h> definiert und muessen eingebunden werden.
!         Diese Definitionen koennen in zukuenftigen Versionen des Drivers
!         aendern!
  
          <what> == OINFO_BASIC:
  
--- 15,23 ----
          Position <index> stehen wuerde.
  
          Die moeglichen Werte fuer <what> und die Indizes des gelieferten
!         Arrays sind in <objectinfo.h> definiert und muessen eingebunden
!         werden. Diese Definitionen koennen sich in zukuenftigen Versionen
!         des Drivers aendern!
  
          <what> == OINFO_BASIC:
  
***************
*** 28,34 ****
                                      Wizard Flag gesetzt hat), sonst 0. Der
                                      Eintrag ist immer 0, wenn set_is_wizard()
                                      nicht verfuegbar ist.
!         int [OIB_ENABLE_COMMANDS]:  1, wenn <ob> Kommandi geben darf, sonst 0.
          int [OIB_CLONE]:            1, wenn <ob> ein Clon ist, sonst 0.
          int [OIB_DESTRUCTED]:       1, wenn <ob> zerstoert wurde, sonst 0.
          int [OIB_SWAPPED]:          1, wenn <ob> geswapt wurde, sonst 0.
--- 28,34 ----
                                      Wizard Flag gesetzt hat), sonst 0. Der
                                      Eintrag ist immer 0, wenn set_is_wizard()
                                      nicht verfuegbar ist.
!         int [OIB_ENABLE_COMMANDS]:  1, wenn <ob> Kommandos geben darf, sonst 0.
          int [OIB_CLONE]:            1, wenn <ob> ein Clon ist, sonst 0.
          int [OIB_DESTRUCTED]:       1, wenn <ob> zerstoert wurde, sonst 0.
          int [OIB_SWAPPED]:          1, wenn <ob> geswapt wurde, sonst 0.
***************
*** 106,117 ****
          int [OIM_NO_SHADOW]:          1, wenn dem Objekt kein Shadow
                                        uebergeworfen werden darf.
  
!         Dieser Aufruf swapt das Programm, falls notwendig. Die OIM_SIZE_xxx
!         Eintraege zeigen nur den Speicherbedarf der Strukturen / Pointers,
!         nicht den Speicherbedarf von Variablenwerten, Funktionscode oder
!         Strings selbst.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6.
          Aenderungen in LDMud 3.2.7:
            - neues Kriterium OIB_REPLACED.
--- 106,118 ----
          int [OIM_NO_SHADOW]:          1, wenn dem Objekt kein Shadow
                                        uebergeworfen werden darf.
  
!         Dieser Aufruf holt das Programm aus dem Swap, falls notwendig.
!         Die OIM_SIZE_xxx-Eintraege zeigen nur den Speicherbedarf der
!         Strukturen / Pointer an, nicht aber den Speicherbedarf von
!         Variablenwerten, Funktionscode oder der Strings selbst.
  
! 
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6.
          Aenderungen in LDMud 3.2.7:
            - neues Kriterium OIB_REPLACED.
diff -c efun.de.orig/object_name.de efun.de/object_name.de
*** efun.de.orig/object_name.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/object_name.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         string object_name();
!         string object_name(object ob);
  
  BESCHREIBUNG
          Liefert den Namen des Objekts <ob> oder des aktuellen Objekts, wenn
--- 1,6 ----
  SYNOPSIS
!         string object_name()
!         string object_name(object ob)
  
  BESCHREIBUNG
          Liefert den Namen des Objekts <ob> oder des aktuellen Objekts, wenn
***************
*** 20,33 ****
          object_name() beruecksichtigt alle diese Aenderungen.
  
          Der zurueck gegebene Name beginnt immer mit '/' (absoluter Pfad),
!         ausser wenn der Driver im Compat Modus laeuft.
  
! BEISPIEL
          find_object(object_name(ob)) == ob
  
          Dies ist immer wahr fuer alle Objekte <ob>, die nicht zerstoert sind.
  
! AENDERUNGEN
          0 als Argument wird seit 3.2.9 akzeptiert.
  
  SIEHE AUCH
--- 20,33 ----
          object_name() beruecksichtigt alle diese Aenderungen.
  
          Der zurueck gegebene Name beginnt immer mit '/' (absoluter Pfad),
!         ausser wenn der Driver im COMPAT-Modus laeuft.
  
! BEISPIELE
          find_object(object_name(ob)) == ob
  
          Dies ist immer wahr fuer alle Objekte <ob>, die nicht zerstoert sind.
  
! GESCHICHTE
          0 als Argument wird seit 3.2.9 akzeptiert.
  
  SIEHE AUCH
diff -c efun.de.orig/objectp.de efun.de/objectp.de
*** efun.de.orig/objectp.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/objectp.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int objectp(mixed arg);
  
  BESCHREIBUNG
          Liefert 1, wenn <arg> ein Objekt ist.
--- 1,5 ----
  SYNOPSIS
!         int objectp(mixed arg)
  
  BESCHREIBUNG
          Liefert 1, wenn <arg> ein Objekt ist.
diff -c efun.de.orig/object_time.de efun.de/object_time.de
*** efun.de.orig/object_time.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/object_time.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int object_time();
!         int object_time(object ob);
  
  BESCHREIBUNG
          Liefert die Zeit, zu der das Objekt <ob> erstellt wurde. Wird <obj>
--- 1,6 ----
  SYNOPSIS
!         int object_time()
!         int object_time(object ob)
  
  BESCHREIBUNG
          Liefert die Zeit, zu der das Objekt <ob> erstellt wurde. Wird <obj>
diff -c efun.de.orig/or_bits.de efun.de/or_bits.de
*** efun.de.orig/or_bits.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/or_bits.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string or_bits(string str1, string str2);
  
  BESCHREIBUNG
          <str1> und <str2> sind beides Bitstrings. Das Resultat von or_bits()
--- 1,5 ----
  SYNOPSIS
!         string or_bits(string str1, string str2)
  
  BESCHREIBUNG
          <str1> und <str2> sind beides Bitstrings. Das Resultat von or_bits()
***************
*** 12,18 ****
          ist der Leerschlag " " mit dem Wert 0. Das erste Zeichen im String
          ist jenes mit den niedrigsten Bits (0-5).
  
! BEISPIEL
          string s1, s2, s3;
  
          s1 = set_bit("", 3); s1 = set_bit(s1, 15);  -> s1 is "( ("
--- 12,18 ----
          ist der Leerschlag " " mit dem Wert 0. Das erste Zeichen im String
          ist jenes mit den niedrigsten Bits (0-5).
  
! BEISPIELE
          string s1, s2, s3;
  
          s1 = set_bit("", 3); s1 = set_bit(s1, 15);  -> s1 is "( ("
diff -c efun.de.orig/order_alist.de efun.de/order_alist.de
*** efun.de.orig/order_alist.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/order_alist.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,7 ****
  VERALTET
  SYNOPSIS
!         mixed *order_alist(mixed *keys, mixed *data, ...);
!         mixed *order_alist(mixed *list);
  
  BESCHREIBUNG
          Diese Funktion erzeugt eine Alist.
--- 1,7 ----
  VERALTET
  SYNOPSIS
!         mixed * order_alist(mixed *keys, mixed *data, ...)
!         mixed * order_alist(mixed *list)
  
  BESCHREIBUNG
          Diese Funktion erzeugt eine Alist.
diff -c efun.de.orig/pow.de efun.de/pow.de
*** efun.de.orig/pow.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/pow.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,16 ****
  SYNOPSIS
!         float pow(int|flaot base, int|flaot exp);
  
  BESCHREIBUNG
          Die Potenzfunktion. Sie liefert das Resultat von "<base> hoch <exp>".
  
! BEISPIEL
!         pow(-2, 3) -> liefert -8.0
          pow(8, 1.0/3.0) -> liefert 2.0
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
!         LDMud 3.2.9. erlaubte neu Integer als Argumente.
  
  SIEHE AUCH
          exp(E), log(E)
--- 1,16 ----
  SYNOPSIS
!         float pow(int|float base, int|float exp)
  
  BESCHREIBUNG
          Die Potenzfunktion. Sie liefert das Resultat von "<base> hoch <exp>".
  
! BEISPIELE
!         pow(-2, 3)      -> liefert -8.0
          pow(8, 1.0/3.0) -> liefert 2.0
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
!         LDMud 3.2.9 erlaubte Integer als Argumente.
  
  SIEHE AUCH
          exp(E), log(E)
diff -c efun.de.orig/present_clone.de efun.de/present_clone.de
*** efun.de.orig/present_clone.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/present_clone.de	2009-11-02 23:18:31.000000000 +0000
***************
*** 1,7 ****
  VORLAEUFIG
  SYNOPSIS
!         object present_clone(string str [, object env] );
!         object present_clone(object obj [, object env] );
  
  BESCHREIBUNG
          Diese Efun durchsucht das Inventar von <env> nach einem Objekt mit
--- 1,7 ----
  VORLAEUFIG
  SYNOPSIS
!         object present_clone(string str [, object env])
!         object present_clone(object obj [, object env])
  
  BESCHREIBUNG
          Diese Efun durchsucht das Inventar von <env> nach einem Objekt mit
***************
*** 29,40 ****
  
          Fuer Driver im Compat Modus liefert die Funktion keine '/' am Anfang.
  
! AENDERUNGEN
!         Eingefuehrt in 3.2.7.
! 
! ANMERKUNG
          Im Unterschied zu present() sucht present_clone() niemals in der
          Umgebung von <env>.
  
  SIEHE AUCH
          load_name(E), present(E)
--- 29,40 ----
  
          Fuer Driver im Compat Modus liefert die Funktion keine '/' am Anfang.
  
! ANMERKUNGEN
          Im Unterschied zu present() sucht present_clone() niemals in der
          Umgebung von <env>.
  
+ GESCHICHTE
+         Eingefuehrt in 3.2.7.
+ 
  SIEHE AUCH
          load_name(E), present(E)
diff -c efun.de.orig/present.de efun.de/present.de
*** efun.de.orig/present.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/present.de	2009-11-02 23:17:56.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object present(mixed str);
          object present(mixed str, int n)
          object present(mixed str, object ob)
          object present(mixed str, int n, object ob)
--- 1,5 ----
  SYNOPSIS
!         object present(mixed str)
          object present(mixed str, int n)
          object present(mixed str, object ob)
          object present(mixed str, int n, object ob)
***************
*** 41,47 ****
              }
          }
  
! ANMERKUNG
          Wenn das n-te Objekt <str> in this_object() UND in der Umgebung von
          this_object() gefunden wird, so liefert present() das n-te Objekt aus
          der Umgebung, nicht beide.
--- 41,47 ----
              }
          }
  
! ANMERKUNGEN
          Wenn das n-te Objekt <str> in this_object() UND in der Umgebung von
          this_object() gefunden wird, so liefert present() das n-te Objekt aus
          der Umgebung, nicht beide.
***************
*** 56,62 ****
          present("chest 2", 1);
            --> findet das erste 'chest 2' Objekt
  
! HISTORY
          LDMud 3.2.11 fuehrte die (str, n)-Form ein.
  
  SIEHE AUCH
--- 56,62 ----
          present("chest 2", 1);
            --> findet das erste 'chest 2' Objekt
  
! GESCHICHTE
          LDMud 3.2.11 fuehrte die (str, n)-Form ein.
  
  SIEHE AUCH
diff -c efun.de.orig/previous_object.de efun.de/previous_object.de
*** efun.de.orig/previous_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/previous_object.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object previous_object();
!         object previous_object(int i);
  
  BESCHREIBUNG
          Liefert einen Pointer auf das letzte Objekt, das einen Aufruf (mittels
--- 1,6 ----
  SYNOPSIS
!         object previous_object()
!         object previous_object(int i)
  
  BESCHREIBUNG
          Liefert einen Pointer auf das letzte Objekt, das einen Aufruf (mittels
***************
*** 16,38 ****
  
          Es gibt einen wichtigen Spezialfall: in Funktionen, die vom Gamedriver
          auf Grund eines externen Ereignises aufgerufen wurden (zum Beispiel
!         Kommandi, die mit add_action() definiert wurden), liefert
!         previous_object() this_object(), previous_object(0) hingegen 0.
  
! BEISPIEL
!         int sicherheitscheck()
!         {
              object prev;
!             if(!(prev=previous_object()));
!             else if(getuid(prev)!=getuid(this_object()));
!             else if(geteuid(prev)!=geteuid(this_object()));
              else return 1;
              return 0;
          }
!         void sensible_funktion()
!         {
!             if(!sicherheitscheck())
!             return;
              ...
          }
  
--- 16,37 ----
  
          Es gibt einen wichtigen Spezialfall: in Funktionen, die vom Gamedriver
          auf Grund eines externen Ereignises aufgerufen wurden (zum Beispiel
!         Kommandos, die mit add_action() definiert wurden), liefert
!         previous_object() den Wert von this_object(), previous_object(0)
!         hingegen 0.
  
! BEISPIELE
!         int sicherheitscheck() {
              object prev;
!             if (!(prev=previous_object()));
!             else if (getuid(prev)  != getuid(this_object()));
!             else if (geteuid(prev) != geteuid(this_object()));
              else return 1;
              return 0;
          }
!         void sensible_funktion() {
!             if (!sicherheitscheck())
!                 return;
              ...
          }
  
diff -c efun.de.orig/printf.de efun.de/printf.de
*** efun.de.orig/printf.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/printf.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         void printf(string format, ...);
  
  BESCHREIBUNG
          Eine Mischung aus sprintf() und write(). Gibt void zurueck und den
--- 1,5 ----
  SYNOPSIS
!         void printf(string format, ...)
  
  BESCHREIBUNG
          Eine Mischung aus sprintf() und write(). Gibt void zurueck und den
diff -c efun.de.orig/process_string.de efun.de/process_string.de
*** efun.de.orig/process_string.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/process_string.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         string process_string(string str);
  
  BESCHREIBUNG
          Durchsucht den String <str> nach "value by function call", das
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         string process_string(string str)
  
  BESCHREIBUNG
          Durchsucht den String <str> nach "value by function call", das
***************
*** 19,44 ****
  
          Sowohl <filename> wie auch die Argumente <arg> sind optional.
  
! BEISPIEL
!         string foo(string str)
!         {
              return "ab"+str+"ef";
          }
  
!         void func()
!         {
              write(process_string("@@foo|cd@@"+"\n");
          }
  
          func() gibt jetzt an den Benutzer den String "abcdef" aus.
  
! BUGS
          Die Verwendung von process_string() kann massive Sicherheitsprobleme
          verursachen.
  
! AENDERUNGEN
!         Wegen der Sicherheitsprobleme ist process_string seit 3.2.1@34
!             optional.
  
  SIEHE AUCH
          notify_fail(E), closures(LPC), get_bb_uid(M)
--- 19,42 ----
  
          Sowohl <filename> wie auch die Argumente <arg> sind optional.
  
! BEISPIELE
!         string foo(string str) {
              return "ab"+str+"ef";
          }
  
!         void func() {
              write(process_string("@@foo|cd@@"+"\n");
          }
  
          func() gibt jetzt an den Benutzer den String "abcdef" aus.
  
! FEHLER
          Die Verwendung von process_string() kann massive Sicherheitsprobleme
          verursachen.
  
! GESCHICHTE
!         Wegen der Sicherheitsprobleme ist process_string() seit 3.2.1@34
!         optional.
  
  SIEHE AUCH
          notify_fail(E), closures(LPC), get_bb_uid(M)
diff -c efun.de.orig/program_name.de efun.de/program_name.de
*** efun.de.orig/program_name.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/program_name.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 8,14 ****
          verwendet.
  
          Der Name ist fuer Clones der Name des Files, aus dem der Blueprint
!         kompliert wurde. Der Name wechselt, wenn ein Objekt sein Programm
          durch replace_program() aendert.
  
          Fuer den Spezialfall, dass <obj> als 0 uebergeben wird, liefert
--- 8,14 ----
          verwendet.
  
          Der Name ist fuer Clones der Name des Files, aus dem der Blueprint
!         kompiliert wurde. Der Name wechselt, wenn ein Objekt sein Programm
          durch replace_program() aendert.
  
          Fuer den Spezialfall, dass <obj> als 0 uebergeben wird, liefert
***************
*** 17,23 ****
          Der Name endet immer mit '.c'. Er beginnt mit einem '/', wenn der
          Driver sich nicht im Compat Modus befindet.
  
! BEISPIEL
          object o;
          o = clone_object("/std/dings");
          write(program_name(o));
--- 17,23 ----
          Der Name endet immer mit '.c'. Er beginnt mit einem '/', wenn der
          Driver sich nicht im Compat Modus befindet.
  
! BEISPIELE
          object o;
          o = clone_object("/std/dings");
          write(program_name(o));
***************
*** 26,38 ****
          --> "/std/dings.c", wenn der Driver nicht im Compat Modus laeuft.
          --> "std/dings.c", wenn der Driver im Compat Modus laeuft.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6.
          Seit 3.2.9 ist das Argument 0 erlaubt.
  
- ANMERKUNG
-         Die Efun swapt zum Programm, wenn dieses geswapt ist.
- 
  SIEHE AUCH
          clone_object(E), clonep(E), load_name(E), load_object(E),
          object_name(E), replace_program(E)
--- 26,38 ----
          --> "/std/dings.c", wenn der Driver nicht im Compat Modus laeuft.
          --> "std/dings.c", wenn der Driver im Compat Modus laeuft.
  
! ANMERKUNGEN
!         Die Efun swapt das Programm ein, wenn dieses ausgelagert ist.
! 
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6.
          Seit 3.2.9 ist das Argument 0 erlaubt.
  
  SIEHE AUCH
          clone_object(E), clonep(E), load_name(E), load_object(E),
          object_name(E), replace_program(E)
diff -c efun.de.orig/program_time.de efun.de/program_time.de
*** efun.de.orig/program_time.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/program_time.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         int program_time();
!         int program_time(object obj);
  
  BESCHREIBUNG
          Gibt den Zeitpunkt an, zu dem das Objekt <obj> (bzw. this_object(),
          wenn nichts angegeben wurde) erzeugt, d.h. kompiliert wurde.
  
! ANMERKUNG
          Diese Efun swapt das Programm zurueck ins Objekt, wenn es ausgelagert
          war.
  
--- 1,12 ----
  SYNOPSIS
!         int program_time()
!         int program_time(object obj)
  
  BESCHREIBUNG
          Gibt den Zeitpunkt an, zu dem das Objekt <obj> (bzw. this_object(),
          wenn nichts angegeben wurde) erzeugt, d.h. kompiliert wurde.
  
! ANMERKUNGEN
          Diese Efun swapt das Programm zurueck ins Objekt, wenn es ausgelagert
          war.
  
diff -c efun.de.orig/query_actions.de efun.de/query_actions.de
*** efun.de.orig/query_actions.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_actions.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/commands.h>
  
!         mixed *query_actions(object|string ob, mixed mask_or_verb);
  
  BESCHREIBUNG
          Das erste Argument von query_actions() ist entweder ein Objekt
--- 1,8 ----
  SYNOPSIS
!         #include <commands.h>
!         #include <sent.h>
  
!         mixed * query_actions(object|string ob, mixed mask_or_verb)
  
  BESCHREIBUNG
          Das erste Argument von query_actions() ist entweder ein Objekt
***************
*** 22,29 ****
              QA_OBJECT       ( 8):   das Objekt,
              QA_FUNCTION     (16):   die Funktion.
  
!         Der Typ ist ein Wert wie in <sent.h> (bzw. /sys/sent.h) definiert,
!         der vom Parser Quellcode geliefert wird.
  
              SENT_PLAIN       durch add_action(fun, cmd) hinzugefuegt
              SENT_SHORT_VERB  durch add_action(fun, cmd, 1) hinzugefuegt
--- 23,30 ----
              QA_OBJECT       ( 8):   das Objekt,
              QA_FUNCTION     (16):   die Funktion.
  
!         Der Typ ist ein Wert wie in <sent.h> definiert, der mit dem
!         Driver-Quellcode geliefert wird.
  
              SENT_PLAIN       durch add_action(fun, cmd) hinzugefuegt
              SENT_SHORT_VERB  durch add_action(fun, cmd, 1) hinzugefuegt
diff -c efun.de.orig/query_command.de efun.de/query_command.de
*** efun.de.orig/query_command.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_command.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string query_command();
  
  BESCHREIBUNG
          Liefert den Text des aktuellen Kommandos oder 0, wenn keines
--- 1,5 ----
  SYNOPSIS
!         string query_command()
  
  BESCHREIBUNG
          Liefert den Text des aktuellen Kommandos oder 0, wenn keines
***************
*** 9,28 ****
          modify_command() ausgefuehrt und nachfolgende Leerzeichen
          abgeschnitten wurden.
  
!         query_command() liefert 0, wenn es von einer Funktion gestartet wurde,
!         die wiederum von einem call_out() oder dem heart_beat() aufgerufen
!         wurde. Auch Kommandi, die beim Userlogin aufgerufen werden, liefern 0.
! 
! BEISPIEL
!         void init()
!         {
              ...
              add_action("sing","sing");
              ...
          }
  
!         int sing(string str)
!         {
              write("Dein Kommando war:"+query_command()+"\n");
              return 1;
          }
--- 9,27 ----
          modify_command() ausgefuehrt und nachfolgende Leerzeichen
          abgeschnitten wurden.
  
!         query_command() liefert 0, wenn es von einer Funktion gestartet
!         wurde, die wiederum von einem call_out() oder dem heart_beat()
!         aufgerufen wurde. Auch Kommandos, die beim Userlogin aufgerufen
!         werden, liefern 0.
! 
! BEISPIELE
!         void init() {
              ...
              add_action("sing","sing");
              ...
          }
  
!         int sing(string str) {
              write("Dein Kommando war:"+query_command()+"\n");
              return 1;
          }
diff -c efun.de.orig/query_editing.de efun.de/query_editing.de
*** efun.de.orig/query_editing.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_editing.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed query_editing(object ob);
  
  BESCHREIBUNG
          Liefert 1, wenn <ob> interaktiv ist (das heisst, es gibt einen realen
--- 1,5 ----
  SYNOPSIS
!         mixed query_editing(object ob)
  
  BESCHREIBUNG
          Liefert 1, wenn <ob> interaktiv ist (das heisst, es gibt einen realen
diff -c efun.de.orig/query_idle.de efun.de/query_idle.de
*** efun.de.orig/query_idle.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_idle.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int query_idle(object ob);
  
  BESCHREIBUNG
          Gibt an, seit wie vielen Sekunden ein Player Objekt <ob> idle ist.
--- 1,5 ----
  SYNOPSIS
!         int query_idle(object ob)
  
  BESCHREIBUNG
          Gibt an, seit wie vielen Sekunden ein Player Objekt <ob> idle ist.
diff -c efun.de.orig/query_imp_port.de efun.de/query_imp_port.de
*** efun.de.orig/query_imp_port.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_imp_port.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,14 ****
  VERALTET
  SYNOPSIS
!         int query_imp_port();
  
  BESCHREIBUNG
!         Liefert die Port Nummer, die fuer das InterMud-Protokoll genutzt wird.
  
! AENDERUNGEN
          LDMud 3.2.9 benannte diese Efun zu query_udp_port() um.
!             query_imp_port() ist nur verfuegbar, wenn der Treiber mit
!             USE_DEPRECATED kompiliert wurde.
  
  SIEHE AUCH
          send_udp(E), receive_udp(M)
--- 1,14 ----
  VERALTET
  SYNOPSIS
!         int query_imp_port()
  
  BESCHREIBUNG
!         Liefert die Port Nummer, die fuer das Intermud-Protokoll genutzt wird.
  
! GESCHICHTE
          LDMud 3.2.9 benannte diese Efun zu query_udp_port() um.
!         query_imp_port() ist nur verfuegbar, wenn der Treiber mit
!         USE_DEPRECATED kompiliert wurde.
  
  SIEHE AUCH
          send_udp(E), receive_udp(M)
diff -c efun.de.orig/query_input_pending.de efun.de/query_input_pending.de
*** efun.de.orig/query_input_pending.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_input_pending.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object query_input_pending(object ob);
  
  BESCHREIBUNG
          Wenn <ob> interaktiv und ein input_to() haengig ist, so liefert die
--- 1,5 ----
  SYNOPSIS
!         object query_input_pending(object ob)
  
  BESCHREIBUNG
          Wenn <ob> interaktiv und ein input_to() haengig ist, so liefert die
diff -c efun.de.orig/query_ip_name.de efun.de/query_ip_name.de
*** efun.de.orig/query_ip_name.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_ip_name.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         string query_ip_name(object ob);
  
  BESCHREIBUNG
          Liefert den IP-Namen des Users <ob> oder des aktuellen Benutzers, wenn
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         string query_ip_name(object ob)
  
  BESCHREIBUNG
          Liefert den IP-Namen des Users <ob> oder des aktuellen Benutzers, wenn
diff -c efun.de.orig/query_ip_number.de efun.de/query_ip_number.de
*** efun.de.orig/query_ip_number.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_ip_number.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT
  SYNOPSIS
!         string query_ip_number(object ob);
!         string query_ip_number(mixed & ob);
  
  BESCHREIBUNG
          Liefert die IP-Nummer des Benutzers <ob> oder des aktuellen Benutzers,
--- 1,7 ----
  GESCHUETZT
  SYNOPSIS
!         string query_ip_number(object ob)
!         string query_ip_number(mixed & ob)
  
  BESCHREIBUNG
          Liefert die IP-Nummer des Benutzers <ob> oder des aktuellen Benutzers,
***************
*** 17,23 ****
              ob[4 .. 7] : sin_addr
              ob[8 ..15] : nicht definiert.
  
! AENDERUNGEN
          Die Rueckgabe von struct sockaddr_in wurde in 3.2.1@81 eingefuehrt.
  
  SIEHE AUCH
--- 17,23 ----
              ob[4 .. 7] : sin_addr
              ob[8 ..15] : nicht definiert.
  
! GESCHICHTE
          Die Rueckgabe von struct sockaddr_in wurde in 3.2.1@81 eingefuehrt.
  
  SIEHE AUCH
diff -c efun.de.orig/query_limits.de efun.de/query_limits.de
*** efun.de.orig/query_limits.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_limits.de	2009-11-02 23:20:01.000000000 +0000
***************
*** 1,9 ****
  VORLAEUFIG
  SYNOPSIS
!         #include <sys/rtlimits.h>
  
!         int *query_limits();
!         int *query_limits(int default);
  
  BESCHREIBUNG
          Liefert ein Array mit den momentan gueltigen Laufzeit Limiten bzw.
--- 1,9 ----
  VORLAEUFIG
  SYNOPSIS
!         #include <rtlimits.h>
  
!         int * query_limits()
!         int * query_limits(int default)
  
  BESCHREIBUNG
          Liefert ein Array mit den momentan gueltigen Laufzeit Limiten bzw.
***************
*** 14,33 ****
          int[LIMIT_ARRAY]:       die maximale Anzahl Array Eintraege
          int[LIMIT_MAPPING]:     die maximale Anzahl Mapping Eintraege
          int[LIMIT_BYTE]:        die maximale Anzahl Bytes, die mit read_bytes()
!                                 /write_bytes() bearbeitet werden koennen
          int[LIMIT_FILE]:        die maximale Anzahl Bytes, die mit read_file()
!                                 /write_file() bearbeitet werden koennen
          int[LIMIT_CALLOUTS]:    die maximale Anzahl gleichzeitiger call_out()s
  
!         Eine Limite von '0' (auch LIMIT_UNLIMITED) bedeutet 'keine Limite'
  
  BEISPIELE
          query_limits()
!         --> liefert die momentan gueltigen Laufzeit Limiten.
          query_limits(1)
!         --> liefert die standardmaessigen Laufzeit Limiten.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
          LIMIT_CALLOUTS wurde in LDMud 3.2.9 eingefuehrt.
  
--- 14,33 ----
          int[LIMIT_ARRAY]:       die maximale Anzahl Array Eintraege
          int[LIMIT_MAPPING]:     die maximale Anzahl Mapping Eintraege
          int[LIMIT_BYTE]:        die maximale Anzahl Bytes, die mit read_bytes()
!                                 bzw. write_bytes() bearbeitet werden koennen
          int[LIMIT_FILE]:        die maximale Anzahl Bytes, die mit read_file()
!                                 bzw. write_file() bearbeitet werden koennen
          int[LIMIT_CALLOUTS]:    die maximale Anzahl gleichzeitiger call_out()s
  
!         Eine Limit von '0' (auch LIMIT_UNLIMITED) bedeutet 'kein Limit'.
  
  BEISPIELE
          query_limits()
!         --> liefert die momentan gueltigen Laufzeitbegrenzungen.
          query_limits(1)
!         --> liefert die standardmaessigen Laufzeitbegrenzungen.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
          LIMIT_CALLOUTS wurde in LDMud 3.2.9 eingefuehrt.
  
diff -c efun.de.orig/query_load_average.de efun.de/query_load_average.de
*** efun.de.orig/query_load_average.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_load_average.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         string query_load_average();
  
  BESCHREIBUNG
          Liefert die Auslastung des Muds. Es werden zwei Zahlen angegeben:
!         ausgefuehrte Kommandi pro Sekunde und kompilierte Zeilen pro Sekunde.
  
  SIEHE AUCH
          rusage(E)
--- 1,9 ----
  SYNOPSIS
!         string query_load_average()
  
  BESCHREIBUNG
          Liefert die Auslastung des Muds. Es werden zwei Zahlen angegeben:
!         ausgefuehrte Kommandos pro Sekunde und kompilierte Zeilen pro Sekunde.
  
  SIEHE AUCH
          rusage(E)
diff -c efun.de.orig/query_mccp_stats.de efun.de/query_mccp_stats.de
*** efun.de.orig/query_mccp_stats.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_mccp_stats.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,7 ****
  OPTIONAL
  SYNOPSIS
!         int *query_mccp_stats()
!         int *query_mccp_stats(object player)
  
  BESCHREIBUNG
          Resultat eine eine Statistik ueber die Netzwerkdatenkompression von
--- 1,7 ----
  OPTIONAL
  SYNOPSIS
!         int * query_mccp_stats()
!         int * query_mccp_stats(object player)
  
  BESCHREIBUNG
          Resultat eine eine Statistik ueber die Netzwerkdatenkompression von
diff -c efun.de.orig/query_mud_port.de efun.de/query_mud_port.de
*** efun.de.orig/query_mud_port.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_mud_port.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         int query_mud_port();
!         int query_mud_port(object user);
!         int query_mud_port(int num);
  
  BESCHREIBUNG
          Liefert die Portnummer, ueber die der Parser Benutzerverbindungen
--- 1,7 ----
  SYNOPSIS
!         int query_mud_port()
!         int query_mud_port(object user)
!         int query_mud_port(int num)
  
  BESCHREIBUNG
          Liefert die Portnummer, ueber die der Parser Benutzerverbindungen
***************
*** 18,22 ****
          Benutzern verwendet wird. Wenn <num> -1 ist, wird die Anzahl fuer
          Verbindungen offener Ports geliefert.
  
! VERGLEICHE
          query_udp_port(E)
--- 18,22 ----
          Benutzern verwendet wird. Wenn <num> -1 ist, wird die Anzahl fuer
          Verbindungen offener Ports geliefert.
  
! SIEHE AUCH
          query_udp_port(E)
diff -c efun.de.orig/query_notify_fail.de efun.de/query_notify_fail.de
*** efun.de.orig/query_notify_fail.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_notify_fail.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         mixed query_notify_fail();
!         mixed query_notify_fail(int flag);
  
  BESCHREIBUNG
          Wenn <flag> nicht angegeben oder 0 ist, liefert die Funktion den String
--- 1,6 ----
  SYNOPSIS
!         mixed query_notify_fail()
!         mixed query_notify_fail(int flag)
  
  BESCHREIBUNG
          Wenn <flag> nicht angegeben oder 0 ist, liefert die Funktion den String
***************
*** 9,15 ****
  
          Wurde keine Meldung gesetzt, wird 0 geliefert.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
          LDMud 3.2.8 fuegte den Paramter <flag> hinzu.
  
--- 9,15 ----
  
          Wurde keine Meldung gesetzt, wird 0 geliefert.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
          LDMud 3.2.8 fuegte den Paramter <flag> hinzu.
  
diff -c efun.de.orig/query_once_interactive.de efun.de/query_once_interactive.de
*** efun.de.orig/query_once_interactive.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_once_interactive.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int query_once_interactive(object obj);
  
  BESCHREIBUNG
          Wahr, wenn <obj> interaktiv ist oder dies einmal war.
--- 1,5 ----
  SYNOPSIS
!         int query_once_interactive(object obj)
  
  BESCHREIBUNG
          Wahr, wenn <obj> interaktiv ist oder dies einmal war.
diff -c efun.de.orig/query_shadowing.de efun.de/query_shadowing.de
*** efun.de.orig/query_shadowing.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_shadowing.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         object query_shadowing(object obj);
  
  BESCHREIBUNG
          Die Efun liefert das Objekt, von dem <obj> der Shadow ist.
          Wenn <obj> kein Shadow ist, liefert die Efun 0.
  
! AENDERUNGEN
          Eingefuehrt in 3.2.1@73.
  
  SIEHE AUCH
--- 1,11 ----
  SYNOPSIS
!         object query_shadowing(object obj)
  
  BESCHREIBUNG
          Die Efun liefert das Objekt, von dem <obj> der Shadow ist.
          Wenn <obj> kein Shadow ist, liefert die Efun 0.
  
! GESCHICHTE
          Eingefuehrt in 3.2.1@73.
  
  SIEHE AUCH
diff -c efun.de.orig/query_snoop.de efun.de/query_snoop.de
*** efun.de.orig/query_snoop.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_snoop.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         object query_snoop(object opfer);
  
  BESCHREIBUNG
          Liefert den Benutzer, der momentan <opfer> beobachtet. Das aufrufende
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         object query_snoop(object opfer)
  
  BESCHREIBUNG
          Liefert den Benutzer, der momentan <opfer> beobachtet. Das aufrufende
diff -c efun.de.orig/query_udp_port.de efun.de/query_udp_port.de
*** efun.de.orig/query_udp_port.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_udp_port.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,10 ****
  SYNOPSIS
!         int query_udp_port();
  
  BESCHREIBUNG
          Liefert die Portnummer des UDP Sockets.
  
! AENDERUNGEN
          LDMud 3.2.9 benannte query_imp_mud() zu diesem Namen um. Die alte
          Version ist nur verfuegbar, wenn der Treiber mit USE_DEPRECATED
          kompiliert wurde.
--- 1,10 ----
  SYNOPSIS
!         int query_udp_port()
  
  BESCHREIBUNG
          Liefert die Portnummer des UDP Sockets.
  
! GESCHICHTE
          LDMud 3.2.9 benannte query_imp_mud() zu diesem Namen um. Die alte
          Version ist nur verfuegbar, wenn der Treiber mit USE_DEPRECATED
          kompiliert wurde.
diff -c efun.de.orig/query_verb.de efun.de/query_verb.de
*** efun.de.orig/query_verb.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/query_verb.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         string query_verb();
!         string query_verb(int flag);
  
  BESCHREIBUNG
          Liefert das Verb des aktuellen Kommandos oder 0, wenn kein Kommando
--- 1,6 ----
  SYNOPSIS
!         string query_verb()
!         string query_verb(int flag)
  
  BESCHREIBUNG
          Liefert das Verb des aktuellen Kommandos oder 0, wenn kein Kommando
***************
*** 10,26 ****
          Zeilenumbruch). Wenn <flag> nicht 0 ist, wird das Verb entsprechend
          der add_action() zurueck gegeben.
  
! BEISPIEL
!         void init()
!         {
              ...
              add_action("sing","singe");
              add_action("sing","jodel", 1);
              ...
          }
  
!         int sing(string str)
!         {
              write("Das Kommando war:"+query_verb()+(str ? str : "")+"\n");
              write("Das Verb war:"+query_verb(1)+(str ? str : "")+"\n");
          }
--- 10,24 ----
          Zeilenumbruch). Wenn <flag> nicht 0 ist, wird das Verb entsprechend
          der add_action() zurueck gegeben.
  
! BEISPIELE
!         void init() {
              ...
              add_action("sing","singe");
              add_action("sing","jodel", 1);
              ...
          }
  
!         int sing(string str) {
              write("Das Kommando war:"+query_verb()+(str ? str : "")+"\n");
              write("Das Verb war:"+query_verb(1)+(str ? str : "")+"\n");
          }
***************
*** 37,43 ****
              Das Kommando war: jodele
              Das Verb war: jodel
  
! AENDERUNGEN
          LDMud 3.2.9. fuehrte das optionale Argument <flag> ein.
  
  SIEHE AUCH
--- 35,41 ----
              Das Kommando war: jodele
              Das Verb war: jodel
  
! GESCHICHTE
          LDMud 3.2.9. fuehrte das optionale Argument <flag> ein.
  
  SIEHE AUCH
diff -c efun.de.orig/quote.de efun.de/quote.de
*** efun.de.orig/quote.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/quote.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,15 ****
  SYNOPSIS
!         mixed quote(mixed arg);
  
  BESCHREIBUNG
          Konvertiert ein Array zu einem quoted Array und Strings zu Symbolen.
          Symbole und quoted Arrays werden erneut gequoted.
  
! BEISPIEL
          quote("foo") -> 'foo
          quote(({1,2,3})) -> '({1,2,3})
  
! AENDERUNGEN
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
--- 1,15 ----
  SYNOPSIS
!         mixed quote(mixed arg)
  
  BESCHREIBUNG
          Konvertiert ein Array zu einem quoted Array und Strings zu Symbolen.
          Symbole und quoted Arrays werden erneut gequoted.
  
! BEISPIELE
          quote("foo") -> 'foo
          quote(({1,2,3})) -> '({1,2,3})
  
! GESCHICHTE
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
diff -c efun.de.orig/raise_error.de efun.de/raise_error.de
*** efun.de.orig/raise_error.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/raise_error.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         void raise_error(string arg);
  
  BESCHREIBUNG
          Bricht die Ausfuehrung des laufenden Programms ab. Wenn das Programm
--- 1,5 ----
  SYNOPSIS
!         void raise_error(string arg)
  
  BESCHREIBUNG
          Bricht die Ausfuehrung des laufenden Programms ab. Wenn das Programm
diff -c efun.de.orig/random.de efun.de/random.de
*** efun.de.orig/random.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/random.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int random(int n);
  
  BESCHREIBUNG
          Liefert eine Zufallszahl im Bereich [0 .. n-1].
--- 1,5 ----
  SYNOPSIS
!         int random(int n)
  
  BESCHREIBUNG
          Liefert eine Zufallszahl im Bereich [0 .. n-1].
diff -c efun.de.orig/read_bytes.de efun.de/read_bytes.de
*** efun.de.orig/read_bytes.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/read_bytes.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string read_bytes(string file, int start, int anzahl);
  
  BESCHREIBUNG
          Liest eine bestimmte Anzahl Bytes aus dem File <file>. Wenn <start>
--- 1,5 ----
  SYNOPSIS
!         string read_bytes(string file, int start, int anzahl)
  
  BESCHREIBUNG
          Liest eine bestimmte Anzahl Bytes aus dem File <file>. Wenn <start>
***************
*** 10,16 ****
          Werte sind zwar moeglich, aber wenig sinnvoll.
  
          Wenn <start> ausserhalb der Groesse des Files liegt, liefert
!         read_byte() 0 zurueck anstelle eines Strings.
  
  SIEHE AUCH
          read_file(E), write_bytes(E), write_file(E)
--- 10,16 ----
          Werte sind zwar moeglich, aber wenig sinnvoll.
  
          Wenn <start> ausserhalb der Groesse des Files liegt, liefert
!         read_byte() anstelle eines Strings 0 zurueck.
  
  SIEHE AUCH
          read_file(E), write_bytes(E), write_file(E)
diff -c efun.de.orig/read_file.de efun.de/read_file.de
*** efun.de.orig/read_file.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/read_file.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string read_file(string file, int start, int anzahl);
  
  BESCHREIBUNG
          Liest Zeilen aus einem File <file>. Wenn <start> angegeben ist und
--- 1,5 ----
  SYNOPSIS
!         string read_file(string file, int start, int anzahl)
  
  BESCHREIBUNG
          Liest Zeilen aus einem File <file>. Wenn <start> angegeben ist und
***************
*** 9,15 ****
          wird das gesamte File gelesen, sonst nur <anzahl> Zeilen.
  
          Wenn <start> ausserhalb der Groesse des Files liegt, liefert
!         read_file() 0 zurureck anstelle eines Strings.
  
  SIEHE AUCH
          read_bytes(E), write_file(E)
--- 9,15 ----
          wird das gesamte File gelesen, sonst nur <anzahl> Zeilen.
  
          Wenn <start> ausserhalb der Groesse des Files liegt, liefert
!         read_file() anstelle eines Strings 0 zurueck.
  
  SIEHE AUCH
          read_bytes(E), write_file(E)
diff -c efun.de.orig/regexp.de efun.de/regexp.de
*** efun.de.orig/regexp.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/regexp.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string *regexp(string *list, string pattern)
  
  BESCHREIBUNG
          Liefert ein neues Array mit all jenen Strings aus list zurueck,
--- 1,5 ----
  SYNOPSIS
!         string * regexp(string *list, string pattern)
  
  BESCHREIBUNG
          Liefert ein neues Array mit all jenen Strings aus list zurueck,
***************
*** 43,60 ****
          Wenn es einen Fehler im regulaeren Ausdruck gibt, wird ein
  	Laufzeitfehler ausgeloest.
  
! BEISPIEL
          string strs;
!         if (strs = regexp( ({"Bitte helfen sie mir, Sir John."}),
!                                  "\\<helfen\\>.*\\<mir\\>"))
             if (sizeof(strs)
                write("Es passt.\n");
  
          Der regulaere Ausdruck wird den uebergebenen String (welcher in
  	einem Array verpackt wurde) daraufhin ueberpruefen, ob
  	sowas wie "helfen ... mir" darin vorkommt.
  
! AENDERUNG
          LDMud 3.2.9 fuegte das Sonderzeichen '+' hinzu.
  
  SIEHE AUCH
--- 43,61 ----
          Wenn es einen Fehler im regulaeren Ausdruck gibt, wird ein
  	Laufzeitfehler ausgeloest.
  
! BEISPIELE
          string strs;
!         if (strs = regexp(({ "Bitte helfen sie mir, Sir John." }),
!                           "\\<helfen\\>.*\\<mir\\>")) {
             if (sizeof(strs)
                write("Es passt.\n");
+         }
  
          Der regulaere Ausdruck wird den uebergebenen String (welcher in
  	einem Array verpackt wurde) daraufhin ueberpruefen, ob
  	sowas wie "helfen ... mir" darin vorkommt.
  
! GESCHICHTE
          LDMud 3.2.9 fuegte das Sonderzeichen '+' hinzu.
  
  SIEHE AUCH
diff -c efun.de.orig/regexplode.de efun.de/regexplode.de
*** efun.de.orig/regexplode.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/regexplode.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         string *regexplode(string text, string pattern);
  
  BESCHREIBUNG
          regexplode() verhaelt sich aehnlich wie explode(), akzeptiert aber
          auch regulaere Ausdruecke als Trennzeichen. Im Ergebnisarray ist
          jedes zweite Element ein Trennzeichen.
  
! AENDERUNGEN
          Eingefuehrt in 3.2@61.
  
  SIEHE AUCH
--- 1,12 ----
  SYNOPSIS
!         string * regexplode(string text, string pattern)
  
  BESCHREIBUNG
          regexplode() verhaelt sich aehnlich wie explode(), akzeptiert aber
          auch regulaere Ausdruecke als Trennzeichen. Im Ergebnisarray ist
          jedes zweite Element ein Trennzeichen.
  
! GESCHICHTE
          Eingefuehrt in 3.2@61.
  
  SIEHE AUCH
diff -c efun.de.orig/regreplace.de efun.de/regreplace.de
*** efun.de.orig/regreplace.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/regreplace.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
  	string regreplace(string txt, string pattern, 
! 		string|closure replacepattern, int flags)
  
  BESCHREIBUNG
  	Die Funktion durchsucht den String txt nach einem Vorkommen
--- 1,6 ----
  SYNOPSIS
  	string regreplace(string txt, string pattern, 
!                             string|closure replacepattern, int flags)
  
  BESCHREIBUNG
  	Die Funktion durchsucht den String txt nach einem Vorkommen
***************
*** 25,31 ****
  	variable Strings zu ersetzen, im Gegensatz zu regexplode, wo
  	man den String nur nach einem regulaeren Ausdruck zerlegen kann.
  
! BEISPIEL
  	string msgin;
  
  	/* Sucht nach 'teilt Dir mit: ' und schliesst den nachfolgenden
--- 25,31 ----
  	variable Strings zu ersetzen, im Gegensatz zu regexplode, wo
  	man den String nur nach einem regulaeren Ausdruck zerlegen kann.
  
! BEISPIELE
  	string msgin;
  
  	/* Sucht nach 'teilt Dir mit: ' und schliesst den nachfolgenden
***************
*** 43,49 ****
  	txt = regreplace(txt, "HOUSE", #'lower_case, 1);
  
  AUTOR
! 	Marcus@TAPPMud schrieb die Original-efun (und die englische Manpage)
  	
  SIEHE AUCH
  	regexp(E), regexplode(E), sscanf(E)
--- 43,49 ----
  	txt = regreplace(txt, "HOUSE", #'lower_case, 1);
  
  AUTOR
! 	Marcus@TAPPMud schrieb die Original-efun (und die englische Manpage).
  	
  SIEHE AUCH
  	regexp(E), regexplode(E), sscanf(E)
diff -c efun.de.orig/remove_action.de efun.de/remove_action.de
*** efun.de.orig/remove_action.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/remove_action.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int remove_action(int|string verb);
!         int remove_action(int|string verb, object obj);
  
  BESCHREIBUNG
          Wenn <verb> ein String ist: entferne das erste im Objekt <obj> durch
--- 1,6 ----
  SYNOPSIS
!         int remove_action(int|string verb)
!         int remove_action(int|string verb, object obj)
  
  BESCHREIBUNG
          Wenn <verb> ein String ist: entferne das erste im Objekt <obj> durch
***************
*** 10,22 ****
          sonst 0.
  
          Wenn <verb> ein Integer ist: wenn verb nicht 0 ist, entferne alle
!         durch das Objekt <obj> definierten Kommandi. Wenn <obj> nicht
          angegeben wird, wird standardmaessig this_player() verwendet. Gibt
!         die Anzahl der entfernten Kommandi zurueck.
  
! AENDERUNGEN
          Eingefuehrt seit 3.2.1.
!         LDMud 3.2.10 fuehrte zusaetzlich die Moeglichkeit ein, alle Kommandi
          auf einmal zu entfernen.
  
  SIEHE AUCH
--- 10,22 ----
          sonst 0.
  
          Wenn <verb> ein Integer ist: wenn verb nicht 0 ist, entferne alle
!         durch das Objekt <obj> definierten Kommandos. Wenn <obj> nicht
          angegeben wird, wird standardmaessig this_player() verwendet. Gibt
!         die Anzahl der entfernten Kommandos zurueck.
  
! GESCHICHTE
          Eingefuehrt seit 3.2.1.
!         LDMud 3.2.10 fuehrte zusaetzlich die Moeglichkeit ein, alle Kommandos
          auf einmal zu entfernen.
  
  SIEHE AUCH
diff -c efun.de.orig/remove_call_out.de efun.de/remove_call_out.de
*** efun.de.orig/remove_call_out.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/remove_call_out.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int remove_call_out(string fun);
!         int remove_call_out(closure fun);
  
  BESCHREIBUNG
          Entfern den naechsten haengigen call_out() auf die Funktion <fun> im
--- 1,6 ----
  SYNOPSIS
!         int remove_call_out(string fun)
!         int remove_call_out(closure fun)
  
  BESCHREIBUNG
          Entfern den naechsten haengigen call_out() auf die Funktion <fun> im
***************
*** 10,21 ****
          Wenn es keine haengigen call_out()s auf <fun> gibt, wird -1 zurueck
          geliefert.
  
! BEISPIEL
          Um alle call_out()s auf MeineFunktion() zu entfernen:
  
!         while(remove_call_out("MeineFunktion") != -1);      /* wiederhole */
  
! BUGS
          Das Entfernen von call_out()s auf Closures funktioniert nur, wenn der
          exakt gleiche Wert fuer die Closure verwendet wird.
  
--- 10,21 ----
          Wenn es keine haengigen call_out()s auf <fun> gibt, wird -1 zurueck
          geliefert.
  
! BEISPIELE
          Um alle call_out()s auf MeineFunktion() zu entfernen:
  
!         while (remove_call_out("MeineFunktion") != -1);      /* wiederhole */
  
! FEHLER
          Das Entfernen von call_out()s auf Closures funktioniert nur, wenn der
          exakt gleiche Wert fuer die Closure verwendet wird.
  
***************
*** 28,34 ****
              call_out(symbol_function("main", obj), 2);
              remove_call_out(symbol_function("main", obj));
  
! AENDERUNGEN
          Das Entfernen eines call_out()s auf eine Closure wurde in 3.2.1@45
          eingefuehrt.
  
--- 28,34 ----
              call_out(symbol_function("main", obj), 2);
              remove_call_out(symbol_function("main", obj));
  
! GESCHICHTE
          Das Entfernen eines call_out()s auf eine Closure wurde in 3.2.1@45
          eingefuehrt.
  
diff -c efun.de.orig/remove_input_to.de efun.de/remove_input_to.de
*** efun.de.orig/remove_input_to.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/remove_input_to.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         int remove_input_to (object player);
!         int remove_input_to (object player, string fun);
!         int remove_input_to (object player, closure fun);
!         int remove_input_to (object player, object fun);
!         int remove_input_to (object player, object obj, string fun);
  
  BESCHREIBUNG
          Entfernt ein haengiges input_to() aus dem interaktiven Playerobjekt.
--- 1,9 ----
  SYNOPSIS
!         int remove_input_to(object player)
!         int remove_input_to(object player, string fun)
!         int remove_input_to(object player, closure fun)
!         int remove_input_to(object player, object fun)
!         int remove_input_to(object player, object obj, string fun)
  
  BESCHREIBUNG
          Entfernt ein haengiges input_to() aus dem interaktiven Playerobjekt.
***************
*** 28,37 ****
  BEISPIELE
          Entfernt alle haengigen input_to()s des aktuellen Spielers, falls
          vorhanden:
!             while(remove_input_to(this_interactive()));
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
          input_to(E), find_input_to(E), input_to_info(E),
--- 28,37 ----
  BEISPIELE
          Entfernt alle haengigen input_to()s des aktuellen Spielers, falls
          vorhanden:
!             while (remove_input_to(this_interactive()));
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.9 / 3.3.119.
  
  SIEHE AUCH
          input_to(E), find_input_to(E), input_to_info(E),
diff -c efun.de.orig/remove_interactive.de efun.de/remove_interactive.de
*** efun.de.orig/remove_interactive.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/remove_interactive.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         void remove_interactive(object obj);
  
  BESCHREIBUNG
          Schliesst die Verbindung zum interaktiven Objekt <obj>.
--- 1,5 ----
  SYNOPSIS
!         void remove_interactive(object obj)
  
  BESCHREIBUNG
          Schliesst die Verbindung zum interaktiven Objekt <obj>.
***************
*** 7,13 ****
          Waehrend der Ausfuehrung der LPC Anweisung ist das Objekt intern als
          'about to be closed' ('wird geschlossen') markiert. Das heisst, dass
          der Output an stdout umgeleitet wird, waehrend die eigentliche
!         Netzwerkverbindung bestehen bleibt, bis die LPC Anweisung vollstaendig
          abgearbeitet wurde.
  
  SIEHE AUCH
--- 7,13 ----
          Waehrend der Ausfuehrung der LPC Anweisung ist das Objekt intern als
          'about to be closed' ('wird geschlossen') markiert. Das heisst, dass
          der Output an stdout umgeleitet wird, waehrend die eigentliche
!         Netzwerkverbindung bestehen bleibt, bis die LPC-Anweisung vollstaendig
          abgearbeitet wurde.
  
  SIEHE AUCH
diff -c efun.de.orig/rename.de efun.de/rename.de
*** efun.de.orig/rename.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/rename.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int rename(string from, string to);
  
  BESCHREIBUNG
          Die Efun rename() verschiebt <from> nach <to>. Wenn <from> ein File
--- 1,5 ----
  SYNOPSIS
!         int rename(string from, string to)
  
  BESCHREIBUNG
          Die Efun rename() verschiebt <from> nach <to>. Wenn <from> ein File
***************
*** 18,24 ****
  
          Bei Erfolg liefert rename() 0, bei Fehlschlag einen Wert ungleich 0.
  
! BEISPIEL
          rename("/players/wizard/obj.c", "/players/wizard/newobj.c");
  
  SIEHE AUCH
--- 18,24 ----
  
          Bei Erfolg liefert rename() 0, bei Fehlschlag einen Wert ungleich 0.
  
! BEISPIELE
          rename("/players/wizard/obj.c", "/players/wizard/newobj.c");
  
  SIEHE AUCH
diff -c efun.de.orig/rename_object.de efun.de/rename_object.de
*** efun.de.orig/rename_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/rename_object.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,13 ****
  GESCHUETZT
  SYNOPSIS
!         void rename_object(object obj, string neuer_name);
  
  BESCHREIBUNG
          Gibt dem Objekt <obj> einen neuen Namen <neuer_name> und verursacht
          eine Schutzverletzung (einen Fehler). <neuer_name> darf kein #
          enthalten, ausser am Ende, um Verwirrung mit Clones zu vermeiden.
  
! AENDERUNGEN
          Eingefuehrt in 3.2@55.
  
  SIEHE AUCH
--- 1,13 ----
  GESCHUETZT
  SYNOPSIS
!         void rename_object(object obj, string neuer_name)
  
  BESCHREIBUNG
          Gibt dem Objekt <obj> einen neuen Namen <neuer_name> und verursacht
          eine Schutzverletzung (einen Fehler). <neuer_name> darf kein #
          enthalten, ausser am Ende, um Verwirrung mit Clones zu vermeiden.
  
! GESCHICHTE
          Eingefuehrt in 3.2@55.
  
  SIEHE AUCH
diff -c efun.de.orig/replace_program.de efun.de/replace_program.de
*** efun.de.orig/replace_program.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/replace_program.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         void replace_program();
!         void replace_program(string program);
  
  BESCHREIBUNG
          Ersetzt ein Programm mit dem geerbten Programm (inherit) <program>.
--- 1,6 ----
  SYNOPSIS
!         void replace_program()
!         void replace_program(string program)
  
  BESCHREIBUNG
          Ersetzt ein Programm mit dem geerbten Programm (inherit) <program>.
***************
*** 36,47 ****
          verschwundene Lfuns des Objekts referenzieren. Das stellt allerdings
          kein Problem dar, solange diese Referenzen nicht ausgefuehrt werden.
  
! BUGS
          Wenn ein ersetzendes Programm virtuell geerbte Variablen enthaelt,
          muss dieses Programm als erstes geerbt werden. Ohne diese
          Einschraenkung ueberleben die falschen Variablen den
          Ersetzungsprozess.
  
! AENDERUNGEN
          LDMud 3.2.9 liess zu, dass das Argument <program> weggelassen wird,
          wenn nur ein Inherit existiert.
--- 36,47 ----
          verschwundene Lfuns des Objekts referenzieren. Das stellt allerdings
          kein Problem dar, solange diese Referenzen nicht ausgefuehrt werden.
  
! FEHLER
          Wenn ein ersetzendes Programm virtuell geerbte Variablen enthaelt,
          muss dieses Programm als erstes geerbt werden. Ohne diese
          Einschraenkung ueberleben die falschen Variablen den
          Ersetzungsprozess.
  
! GESCHICHTE
          LDMud 3.2.9 liess zu, dass das Argument <program> weggelassen wird,
          wenn nur ein Inherit existiert.
diff -c efun.de.orig/restore_object.de efun.de/restore_object.de
*** efun.de.orig/restore_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/restore_object.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int restore_object(string name);
!         int restore_object(string str);     (VORLAEUFIG)
  
  BESCHREIBUNG
          Laedt Werte von Variablen fuer das aktuelle Objekt aus der Datei
--- 1,6 ----
  SYNOPSIS
!         int restore_object(string name)
!         int restore_object(string str)
  
  BESCHREIBUNG
          Laedt Werte von Variablen fuer das aktuelle Objekt aus der Datei
***************
*** 34,40 ****
          einzigartigen Namen bei nicht-statischen Variablen. So wird auch das
          manuelle Lesen oder Editieren des Savefiles einfacher.
  
! AENDERUNGEN
          Das direkte Laden aus einem String wurde in LDMud 3.2.8 eingefuehrt,
              wird aber moeglicherweise in Zukunft in eine separate Efun
              ausgelagert.
--- 34,40 ----
          einzigartigen Namen bei nicht-statischen Variablen. So wird auch das
          manuelle Lesen oder Editieren des Savefiles einfacher.
  
! GESCHICHTE
          Das direkte Laden aus einem String wurde in LDMud 3.2.8 eingefuehrt,
              wird aber moeglicherweise in Zukunft in eine separate Efun
              ausgelagert.
diff -c efun.de.orig/restore_value.de efun.de/restore_value.de
*** efun.de.orig/restore_value.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/restore_value.de	2009-11-02 22:26:05.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed restore_value(string str);
  
  BESCHREIBUNG
          Wandelt die String-Entsprechung <str> eines Wertes zurueck in den Wert
--- 1,5 ----
  SYNOPSIS
!         mixed restore_value(string str)
  
  BESCHREIBUNG
          Wandelt die String-Entsprechung <str> eines Wertes zurueck in den Wert
***************
*** 7,13 ****
          save_value() erzeugt wird. Die Spezifikation des Speicherformates
          '#x:y' ist optional.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.8.
          Mit LDMud 3.2.9 kam das Laden von Non-Lambda Closures, Symbolen und
          gequoteten Arrays hinzu, wozu ein neues Format fuer die Speicherdatei
--- 7,13 ----
          save_value() erzeugt wird. Die Spezifikation des Speicherformates
          '#x:y' ist optional.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.8.
          Mit LDMud 3.2.9 kam das Laden von Non-Lambda Closures, Symbolen und
          gequoteten Arrays hinzu, wozu ein neues Format fuer die Speicherdatei
diff -c efun.de.orig/rm.de efun.de/rm.de
*** efun.de.orig/rm.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/rm.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int rm(string file);
  
  BESCHREIBUNG
          Loescht die Datei <file>. Gibt 0 zurueck, wenn etwas nicht geklappt
--- 1,5 ----
  SYNOPSIS
!         int rm(string file)
  
  BESCHREIBUNG
          Loescht die Datei <file>. Gibt 0 zurueck, wenn etwas nicht geklappt
diff -c efun.de.orig/rmdir.de efun.de/rmdir.de
*** efun.de.orig/rmdir.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/rmdir.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int rmdir(string dir);
  
  BESCHREIBUNG
          Loescht das Verzeichnis <dir>. Liefert 1 bei Erfolg, 0 bei Misserfolg.
--- 1,5 ----
  SYNOPSIS
!         int rmdir(string dir)
  
  BESCHREIBUNG
          Loescht das Verzeichnis <dir>. Liefert 1 bei Erfolg, 0 bei Misserfolg.
diff -c efun.de.orig/rmember.de efun.de/rmember.de
*** efun.de.orig/rmember.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/rmember.de	2009-11-02 23:08:53.000000000 +0000
***************
*** 1,13 ****
  SYNOPSIS
!         int rmember(mixed *array, mixed elem);
!         int rmember(string str, int elem);
  
  BESCHREIBUNG
          Liefert fuer Arrays und Strings den Index des letzten Auftretens des
          Arguments <elem> im Array <*array>  bzw. im String <str>. Wenn <elem>
          nicht gefunden wird, liefert die Funktion -1 zurueck.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
--- 1,13 ----
  SYNOPSIS
!         int rmember(mixed *array, mixed elem)
!         int rmember(string str, int elem)
  
  BESCHREIBUNG
          Liefert fuer Arrays und Strings den Index des letzten Auftretens des
          Arguments <elem> im Array <*array>  bzw. im String <str>. Wenn <elem>
          nicht gefunden wird, liefert die Funktion -1 zurueck.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
diff -c efun.de.orig/rusage.de efun.de/rusage.de
*** efun.de.orig/rusage.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/rusage.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         int *rusage();
  
  BESCHREIBUNG
          Liefert ein Array mit Informationen ueber den momentanen
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         int * rusage()
  
  BESCHREIBUNG
          Liefert ein Array mit Informationen ueber den momentanen
***************
*** 11,18 ****
              rus.ru_oublock, rus.ru_msgsnd, rus.ru_msgrcv, rus.ru_nsignals,
              rus.ru_nvcsw, rus.ru_nivcsw
  
! ANMERKUNG
!     Diese Funktion ist optional.
  
  SIEHE AUCH
          sys/resource.h(Unix)
--- 11,18 ----
              rus.ru_oublock, rus.ru_msgsnd, rus.ru_msgrcv, rus.ru_nsignals,
              rus.ru_nvcsw, rus.ru_nivcsw
  
! ANMERKUNGEN
!         Diese Funktion ist optional.
  
  SIEHE AUCH
          sys/resource.h(Unix)
diff -c efun.de.orig/save_object.de efun.de/save_object.de
*** efun.de.orig/save_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/save_object.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int save_object(string name [, int format]);
!         string save_object([int format]);
  
  BESCHREIBUNG
          Codiert die speicherbaren Variablen des aktuellen Objekts in einen
--- 1,6 ----
  SYNOPSIS
!         int    save_object(string name [, int format])
!         string save_object([int format])
  
  BESCHREIBUNG
          Codiert die speicherbaren Variablen des aktuellen Objekts in einen
***************
*** 28,34 ****
          Eine Variable wird als 'speicherbar' betrachtet, wenn sie nicht als
          'nosave' oder 'static' deklariert ist.
  
! AENDERUNGEN
          Seit LDMud 3.2.8 liefert save_object() einen fixen Wert bei Erfolg.
          Das direkte Abspeichern in einen String wurde in LDMud 3.2.8
              eingefuehrt, wird aber in Zukunft eventuell in eine separate Efun
--- 28,34 ----
          Eine Variable wird als 'speicherbar' betrachtet, wenn sie nicht als
          'nosave' oder 'static' deklariert ist.
  
! GESCHICHTE
          Seit LDMud 3.2.8 liefert save_object() einen fixen Wert bei Erfolg.
          Das direkte Abspeichern in einen String wurde in LDMud 3.2.8
              eingefuehrt, wird aber in Zukunft eventuell in eine separate Efun
diff -c efun.de.orig/save_value.de efun.de/save_value.de
*** efun.de.orig/save_value.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/save_value.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string save_value(mixed wert [, int format]);
  
  BESCHREIBUNG
          Schreibt <wert> in einen String, der sich mit restore_value()
--- 1,6 ----
  SYNOPSIS
!         string save_value(mixed wert)
!         string save_value(mixed wert, int format)
  
  BESCHREIBUNG
          Schreibt <wert> in einen String, der sich mit restore_value()
***************
*** 20,26 ****
          Das Format zum Schreiben des Wertes in den String entspricht dem von
          save_object() und restore_object() verwendeten Format.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.8.
          LDMud 3.2.9. ergaenzte die Funktion um die Moeglichkeit, Non-Lambda
              Closures, Symbole und gequotete Arrays zu speichern. Dazu wurde
--- 21,27 ----
          Das Format zum Schreiben des Wertes in den String entspricht dem von
          save_object() und restore_object() verwendeten Format.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.8.
          LDMud 3.2.9. ergaenzte die Funktion um die Moeglichkeit, Non-Lambda
              Closures, Symbole und gequotete Arrays zu speichern. Dazu wurde
diff -c efun.de.orig/say.de efun.de/say.de
*** efun.de.orig/say.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/say.de	2009-11-02 23:15:07.000000000 +0000
***************
*** 1,12 ****
  VERALTET
  SYNOPSIS
!         void say(string str);
!         void say(string str, object exclude);
!         void say(string str, object *excludes);
! 
!         void say(mixed *arr);
!         void say(mixed *arr, object exclude);
!         void say(mixed *arr, object *excludes);
  
  BESCHREIBUNG
          Es bestehen zwei Hauptanwendungen fuer say():
--- 1,12 ----
  VERALTET
  SYNOPSIS
!         void say(string str)
!         void say(string str, object exclude)
!         void say(string str, object *excludes)
! 
!         void say(mixed *arr)
!         void say(mixed *arr, object exclude)
!         void say(mixed *arr, object *excludes)
  
  BESCHREIBUNG
          Es bestehen zwei Hauptanwendungen fuer say():
***************
*** 53,66 ****
          write() an den aktuellen Benutzer geht.
  
          Objekt 1 (living):
!             void catch_tell(string str)
!             {
                  write("Empfangen: "+str+"\n");
              }
  
          Objekt 2 (nicht living):
!             void func()
!             {
                  ...
                  say("HiHo!\n");
                  ...
--- 53,64 ----
          write() an den aktuellen Benutzer geht.
  
          Objekt 1 (living):
!             void catch_tell(string str) {
                  write("Empfangen: "+str+"\n");
              }
  
          Objekt 2 (nicht living):
!             void func() {
                  ...
                  say("HiHo!\n");
                  ...
***************
*** 72,94 ****
          catch_msg() auf den aktuellen Benutzer zeigt.
  
          Object 1 (living):
!             void catch_msg(mixed *arr, object who)
!             {
                  int i;
!                 if(!arr) return;
!                 for(i=0;i<sizeof(arr);i++)
                      tell_object(who, (stringp(arr[i]) ? arr[i] : "-/-")+"\n");
              }
  
          Object 2 (nicht living):
!             void func()
!             {
                  ...
                  say( ({ "Hello", "there!" }) );
                  ...
              }
  
! ANMERKUNG
          Wenn die Lfun catch_msg() den Array <arr> veraendert, erhalten alle
          nachfolgenden Objekte das veraenderte <arr>.
  
--- 70,90 ----
          catch_msg() auf den aktuellen Benutzer zeigt.
  
          Object 1 (living):
!             void catch_msg(mixed *arr, object who) {
                  int i;
!                 if (!arr) return;
!                 for (i=0;i<sizeof(arr);i++)
                      tell_object(who, (stringp(arr[i]) ? arr[i] : "-/-")+"\n");
              }
  
          Object 2 (nicht living):
!             void func() {
                  ...
                  say( ({ "Hello", "there!" }) );
                  ...
              }
  
! ANMERKUNGEN
          Wenn die Lfun catch_msg() den Array <arr> veraendert, erhalten alle
          nachfolgenden Objekte das veraenderte <arr>.
  
diff -c efun.de.orig/send_erq.de efun.de/send_erq.de
*** efun.de.orig/send_erq.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/send_erq.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         int send_erq(int request, string|int *data, closure callback);
  
  BESCHREIBUNG
          Eine Anfrage vom Typ <request> (standardmaessig 0) wird mit Inhalt
--- 1,8 ----
  GESCHUETZT
  SYNOPSIS
!         #include <erq.h>
! 
!         int send_erq(int request, string|int *data, closure callback)
  
  BESCHREIBUNG
          Eine Anfrage vom Typ <request> (standardmaessig 0) wird mit Inhalt
***************
*** 13,28 ****
  
          <data> kann entweder ein String oder ein Array von Integers sein,
          wobei im zweiten Fall die Zahlen als Zeichen interpretiert werden.
!         Die unterschiedlichen Anfragen sind in /sys/erq.h definiert.
  
          Die Funktion liefert 0 zurueck, wenn das Senden fehlgeschlagen ist,
          etwas anderes sost.
  
          Die Funktion verursacht eine Schutzverletzung "erq".
  
! AENDERUNGEN
          Eingefuehrt in 3.2.1@61.
!         Geschuetzt in 3.2.1@84
  
  SIEHE AUCH
          attach_erq_demon(E), erq(C)
--- 15,31 ----
  
          <data> kann entweder ein String oder ein Array von Integers sein,
          wobei im zweiten Fall die Zahlen als Zeichen interpretiert werden.
!         Die unterschiedlichen Anfragen sind in <erq.h> definiert.
  
          Die Funktion liefert 0 zurueck, wenn das Senden fehlgeschlagen ist,
          etwas anderes sost.
  
          Die Funktion verursacht eine Schutzverletzung "erq".
  
! GESCHICHTE
          Eingefuehrt in 3.2.1@61.
!         Geschuetzt in 3.2.1@84.
!         LDMud 3.3.318 fuehrte das ERQ_CB_STRING-Flag ein.
  
  SIEHE AUCH
          attach_erq_demon(E), erq(C)
diff -c efun.de.orig/send_imp.de efun.de/send_imp.de
*** efun.de.orig/send_imp.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/send_imp.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT, VERALTET
  SYNOPSIS
!         int send_imp(string host, int port, string message);
!         int send_imp(string host, int port, int *message);
  
  BESCHREIBUNG
          Sendet die Nachricht <message> als UDP Paket an den angegebenen Host
--- 1,7 ----
  GESCHUETZT, VERALTET
  SYNOPSIS
!         int send_imp(string host, int port, string message)
!         int send_imp(string host, int port, int *message)
  
  BESCHREIBUNG
          Sendet die Nachricht <message> als UDP Paket an den angegebenen Host
***************
*** 23,29 ****
          wird. Das spaetere send_udp() kann in diesem Fall 0 zurueck liefern,
          obwohl es erfolgreich war.
  
! AENDERUNGEN
          LDMud 3.2.9 benannte diese Efun von send_imp() und veraenderte auch
              die Schutzverletzung (bzw. die entsprechende Fehlermeldung) und
              die Apply Namen. Die alte Version ist verfuegbar, wenn im
--- 23,29 ----
          wird. Das spaetere send_udp() kann in diesem Fall 0 zurueck liefern,
          obwohl es erfolgreich war.
  
! GESCHICHTE
          LDMud 3.2.9 benannte diese Efun von send_imp() und veraenderte auch
              die Schutzverletzung (bzw. die entsprechende Fehlermeldung) und
              die Apply Namen. Die alte Version ist verfuegbar, wenn im
diff -c efun.de.orig/send_udp.de efun.de/send_udp.de
*** efun.de.orig/send_udp.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/send_udp.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT
  SYNOPSIS
!         int send_udp(string host, int port, string message);
!         int send_udp(string host, int port, int *message);
  
  BESCHREIBUNG
          Sendet die Nachricht <message> als UDP Paket an den angegebenen Host
--- 1,7 ----
  GESCHUETZT
  SYNOPSIS
!         int send_udp(string host, int port, string message)
!         int send_udp(string host, int port, int *message)
  
  BESCHREIBUNG
          Sendet die Nachricht <message> als UDP Paket an den angegebenen Host
***************
*** 19,39 ****
          wird. Das spaetere send_udp() kann in diesem Fall 0 zurueck liefern,
          obwohl es erfolgreich war.
  
- AENDERUNGEN
-         LDMud 3.2.9 benannte diese Efun von send_imp() und veraenderte auch
-             die Schutzverletzung (bzw. die entsprechende Fehlermeldung) und
-             die Apply Namen. Die alte Version ist verfuegbar, wenn im
-             Treiber USE_DEPRECATED gesetzt ist.
- 
  FEHLER
          Ist <host> ein qualifizierter Hostname (anstelle einer IP Adresse),
          blockiert die Ausfuehrung fuer die Dauer der Namensaufloesung.
  
! ANMERKUNG
          Auf manchen Systemen wird ein fehlgeschlagener Versuch von send_udp()
          nicht registriert, bis das naechste send_udp() aufgerufen wird.
!         Das spaetere send_udp() kann in diesem Fall 0 zurueck liefern, obwohl
          es erfolgreich war.
  
  SIEHE AUCH
          query_udp_port(E), receive_udp(M)
--- 19,39 ----
          wird. Das spaetere send_udp() kann in diesem Fall 0 zurueck liefern,
          obwohl es erfolgreich war.
  
  FEHLER
          Ist <host> ein qualifizierter Hostname (anstelle einer IP Adresse),
          blockiert die Ausfuehrung fuer die Dauer der Namensaufloesung.
  
! ANMERKUNGEN
          Auf manchen Systemen wird ein fehlgeschlagener Versuch von send_udp()
          nicht registriert, bis das naechste send_udp() aufgerufen wird.
!         Das spaetere send_udp() kann in diesem Fall 0 zurueckliefern, obwohl
          es erfolgreich war.
  
+ GESCHICHTE
+         LDMud 3.2.9 benannte diese Efun von send_imp() und veraenderte auch
+             die Schutzverletzung (bzw. die entsprechende Fehlermeldung) und
+             die Apply Namen. Die alte Version ist verfuegbar, wenn im
+             Treiber USE_DEPRECATED gesetzt ist.
+ 
  SIEHE AUCH
          query_udp_port(E), receive_udp(M)
diff -c efun.de.orig/set_auto_include_string.de efun.de/set_auto_include_string.de
*** efun.de.orig/set_auto_include_string.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_auto_include_string.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT, VERALTET
  SYNOPSIS
!         void set_auto_include_string(string arg);
  
  BESCHREIBUNG
          <arg> wird automatisch in jedes neu kompilierte LPC-Objekt
--- 1,6 ----
  GESCHUETZT, VERALTET
  SYNOPSIS
!         void set_auto_include_string(string arg)
  
  BESCHREIBUNG
          <arg> wird automatisch in jedes neu kompilierte LPC-Objekt
***************
*** 12,18 ****
          Der auto_include_string wird geloescht, wenn das Masterobjekt
          neu geladen wird.
  
! AENDERUNGEN
          LDMud 3.2.9 ersetzte set_auto_include_string() durch den Driver
              Hook H_AUTO_INCLUDE. Diese alte Version ist nur verfuegbar,
              wenn der Treiber mit USE_DEPRECATED kompiliert wurde.
--- 12,18 ----
          Der auto_include_string wird geloescht, wenn das Masterobjekt
          neu geladen wird.
  
! GESCHICHTE
          LDMud 3.2.9 ersetzte set_auto_include_string() durch den Driver
              Hook H_AUTO_INCLUDE. Diese alte Version ist nur verfuegbar,
              wenn der Treiber mit USE_DEPRECATED kompiliert wurde.
diff -c efun.de.orig/set_bit.de efun.de/set_bit.de
*** efun.de.orig/set_bit.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_bit.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string set_bit(string str, int n);
  
  BESCHREIBUNG
          Liefert einen neuen String, bei dem das Bit <n> in <str> gesetzt
--- 1,5 ----
  SYNOPSIS
!         string set_bit(string str, int n)
  
  BESCHREIBUNG
          Liefert einen neuen String, bei dem das Bit <n> in <str> gesetzt
***************
*** 12,18 ****
  
          Der neue String wird automatisch verlaengert, falls noetig.
  
! BEISPIEL
          string s;
          s=set_bit("?",5);
  
--- 12,18 ----
  
          Der neue String wird automatisch verlaengert, falls noetig.
  
! BEISPIELE
          string s;
          s=set_bit("?",5);
  
diff -c efun.de.orig/set_buffer_size.de efun.de/set_buffer_size.de
*** efun.de.orig/set_buffer_size.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_buffer_size.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,16 ****
  GESCHUETZT
  SYNOPSIS
!         int set_buffer_size(int size);
  
  BESCHREIBUNG
!         Veraendert die Groesse des Socket Puffers fuer this_interactive() auf
          <size>, solange <size> ein vorkonfigueriertes Maximum nicht
          ueberschreitet. Die Funktion liefert die alte Puffergroesse zurueck
!         oder -1 auf Systemen, die die Groesse des Socket Puffers nicht
          veraendern koennen.
  
!         Eine Veraenderung der Puffergroesse kann eine Verbesserung des IO
!         Durchsatzes bringen, diesen aber auch verschlechtern.
  
! AENDERUNGEN
          Eingefuehrt in 3.2.1@34.
--- 1,16 ----
  GESCHUETZT
  SYNOPSIS
!         int set_buffer_size(int size)
  
  BESCHREIBUNG
!         Veraendert die Groesse des Socketpuffers fuer this_interactive() auf
          <size>, solange <size> ein vorkonfigueriertes Maximum nicht
          ueberschreitet. Die Funktion liefert die alte Puffergroesse zurueck
!         oder -1 auf Systemen, die die Groesse des Socketpuffers nicht
          veraendern koennen.
  
!         Eine Veraenderung der Puffergroesse kann eine Verbesserung des 
!         I/O-Durchsatzes bringen, diesen aber auch verschlechtern.
  
! GESCHICHTE
          Eingefuehrt in 3.2.1@34.
diff -c efun.de.orig/set_combine_charset.de efun.de/set_combine_charset.de
*** efun.de.orig/set_combine_charset.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_combine_charset.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         void set_combine_charset(int *bitvector);
!         void set_combine_charset(string charset);
!         void set_combine_charset(0);
  
  BESCHREIBUNG
          Setzt den Satz der zu einem einzelnen String kombinierbaren Zeichen,
--- 1,7 ----
  SYNOPSIS
!         void set_combine_charset(int *bitvector)
!         void set_combine_charset(string charset)
!         void set_combine_charset(0)
  
  BESCHREIBUNG
          Setzt den Satz der zu einem einzelnen String kombinierbaren Zeichen,
***************
*** 12,18 ****
          zurueck gegeben, wie gewohnt. Die Funktion muss mit dem interaktiven
          Benutzer als Kommandogeber aufgerufen werden.
  
!         Der Zeilenumbruch "\n" und das Nullzeichen "\0" ist immer
          inkompatibel.
  
          Der Zeichensatz kann entweder direkt als String oder indirekt als
--- 12,18 ----
          zurueck gegeben, wie gewohnt. Die Funktion muss mit dem interaktiven
          Benutzer als Kommandogeber aufgerufen werden.
  
!         Der Zeilenumbruch "\n" und das Nullzeichen "\0" sind immer
          inkompatibel.
  
          Der Zeichensatz kann entweder direkt als String oder indirekt als
***************
*** 25,31 ****
  
              sizeof(bitvektor) > n/8 && bitvektor[n/8] & (1 << n%8)
  
! BEISPIEL
          In einem bildschirmorientierten Editor koennen die meisten
          druckbaren Zeichen (abgesehen von Antworten auf Prompts wie 'j',
          'n' oder 'q') in kombinierte Strings zusammengefasst werden.
--- 25,31 ----
  
              sizeof(bitvektor) > n/8 && bitvektor[n/8] & (1 << n%8)
  
! BEISPIELE
          In einem bildschirmorientierten Editor koennen die meisten
          druckbaren Zeichen (abgesehen von Antworten auf Prompts wie 'j',
          'n' oder 'q') in kombinierte Strings zusammengefasst werden.
***************
*** 36,42 ****
          Der Standard wird so wiederhergestellt:
              set_combine_charset("");
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.8.
          LDMued 3.2.10 ergaenzte die Funktion um die Moeglichkeit, den
              Standard wiederherzustellen.
--- 36,42 ----
          Der Standard wird so wiederhergestellt:
              set_combine_charset("");
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.8.
          LDMued 3.2.10 ergaenzte die Funktion um die Moeglichkeit, den
              Standard wiederherzustellen.
diff -c efun.de.orig/set_connection_charset.de efun.de/set_connection_charset.de
*** efun.de.orig/set_connection_charset.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_connection_charset.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,8 ****
  GESCHUETZT
  SYNOPSIS
!         void set_connection_charset(int* bitvector, int quote_iac);
!         void set_connection_charset(string charset, int quote_iac);
!         void set_connection_charset(0, int quote_iac);
  
  BESCHREIBUNG
          Setzt den Zeichensatz, der an den aktuellen interaktiven Benutzer
--- 1,8 ----
  GESCHUETZT
  SYNOPSIS
!         void set_connection_charset(int *bitvector, int quote_iac)
!         void set_connection_charset(string charset, int quote_iac)
!         void set_connection_charset(0, int quote_iac)
  
  BESCHREIBUNG
          Setzt den Zeichensatz, der an den aktuellen interaktiven Benutzer
***************
*** 24,30 ****
          erlaubt ist, wird dieses Zeichen gequotet, damit es vom Telnet
          Protokoll nicht als IAC interpretiert wird.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.1@40.
          LDMud 3.2.8 fuehrte die Moeglichkeit ein, den Zeichensatz als String
              zu uebergeben.
--- 24,30 ----
          erlaubt ist, wird dieses Zeichen gequotet, damit es vom Telnet
          Protokoll nicht als IAC interpretiert wird.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.1@40.
          LDMud 3.2.8 fuehrte die Moeglichkeit ein, den Zeichensatz als String
              zu uebergeben.
diff -c efun.de.orig/set_environment.de efun.de/set_environment.de
*** efun.de.orig/set_environment.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_environment.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         void set_environment(objet was, object env);
  
  BESCHREIBUNG
          Das Objekt <was> wird in die Umgebung <env> bewegt, welche auch 0
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         void set_environment(objet was, object env)
  
  BESCHREIBUNG
          Das Objekt <was> wird in die Umgebung <env> bewegt, welche auch 0
***************
*** 10,16 ****
  
          Sprich: nicht in eigenen Objekten verwenden!
  
! AENDERUNGEN
          Eingefuehrt in 3.2.1.@1 als 'efun308()'.
          In 3.2.6 umbenannt zu 'set_environment()'.
  
--- 10,16 ----
  
          Sprich: nicht in eigenen Objekten verwenden!
  
! GESCHICHTE
          Eingefuehrt in 3.2.1.@1 als 'efun308()'.
          In 3.2.6 umbenannt zu 'set_environment()'.
  
diff -c efun.de.orig/seteuid.de efun.de/seteuid.de
*** efun.de.orig/seteuid.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/seteuid.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int seteuid(string str);
  
  BESCHREIBUNG
          Setzt die effektive UID auf <str>. Das aufrufende Objekt muss dazu
--- 1,5 ----
  SYNOPSIS
!         int seteuid(string str)
  
  BESCHREIBUNG
          Setzt die effektive UID auf <str>. Das aufrufende Objekt muss dazu
***************
*** 10,19 ****
          Nur wenn dieser Wert 0 ist, kann die UID des Objekts durch
          export_uid() veraendert werden.
  
!         Unter strikten eUID Regeln koennen Objekte mit UID 0 keine anderen
          Objekte laden oder clonen.
  
! AENDERUNGEN
          Seit 3.2.1@47 ist die Efun nur verfuegbar, wenn eUIDs verwendet
              werden.
          Seti 3.2.7 ist diese Efun immer verfuegbar.
--- 10,19 ----
          Nur wenn dieser Wert 0 ist, kann die UID des Objekts durch
          export_uid() veraendert werden.
  
!         Unter strikten eUID-Regeln koennen Objekte mit UID 0 keine anderen
          Objekte laden oder clonen.
  
! GESCHICHTE
          Seit 3.2.1@47 ist die Efun nur verfuegbar, wenn eUIDs verwendet
              werden.
          Seti 3.2.7 ist diese Efun immer verfuegbar.
diff -c efun.de.orig/set_extra_wizinfo.de efun.de/set_extra_wizinfo.de
*** efun.de.orig/set_extra_wizinfo.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_extra_wizinfo.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,8 ****
  GESCHUETZT
  SYNOPSIS
!         void set_extra_wizinfo(object wiz, mixed extra);
!         void set_extra_wizinfo(string wiz, mixed extra);
!         void set_extra_wizinfo(int    wiz, mixed extra);
  
  BESCHREIBUNG
          Setzt den Wert <extra> als Eintrag im 'Extra' Feld in der Wizlist fuer
--- 1,8 ----
  GESCHUETZT
  SYNOPSIS
!         void set_extra_wizinfo(object wiz, mixed extra)
!         void set_extra_wizinfo(string wiz, mixed extra)
!         void set_extra_wizinfo(int    wiz, mixed extra)
  
  BESCHREIBUNG
          Setzt den Wert <extra> als Eintrag im 'Extra' Feld in der Wizlist fuer
diff -c efun.de.orig/set_extra_wizinfo_size.de efun.de/set_extra_wizinfo_size.de
*** efun.de.orig/set_extra_wizinfo_size.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_extra_wizinfo_size.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         void set_extra_wizinfo_size(int size);
  
  BESCHREIBUNG
          Bewirkt, dass die Wizlist ein Array der Groesse <size> mit
--- 1,5 ----
  SYNOPSIS
!         void set_extra_wizinfo_size(int size)
  
  BESCHREIBUNG
          Bewirkt, dass die Wizlist ein Array der Groesse <size> mit
diff -c efun.de.orig/set_heart_beat.de efun.de/set_heart_beat.de
*** efun.de.orig/set_heart_beat.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_heart_beat.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int set_heart_beat(int flag);
  
  BESCHREIBUNG
          Schaltet den Heartbeat ein oder aus. Der Treiber wendet die Lfun
--- 1,5 ----
  SYNOPSIS
!         int set_heart_beat(int flag)
  
  BESCHREIBUNG
          Schaltet den Heartbeat ein oder aus. Der Treiber wendet die Lfun
diff -c efun.de.orig/set_is_wizard.de efun.de/set_is_wizard.de
*** efun.de.orig/set_is_wizard.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_is_wizard.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         int set_is_wizard(object obj, int n);
  
  BESCHREIBUNG
          Setzt das Wizard-Flag des Objekts. Wenn n = 0, wird das Flag
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         int set_is_wizard(object obj, int n)
  
  BESCHREIBUNG
          Setzt das Wizard-Flag des Objekts. Wenn n = 0, wird das Flag
***************
*** 12,16 ****
          dumpallobj etc. beeinflusst, die standardmaessig fuer alle Benutzer
          freigegeben sind.
  
! AENDERUNGEN
          Seit 3.2.7 ist diese Efun optional.
--- 12,16 ----
          dumpallobj etc. beeinflusst, die standardmaessig fuer alle Benutzer
          freigegeben sind.
  
! GESCHICHTE
          Seit 3.2.7 ist diese Efun optional.
diff -c efun.de.orig/set_light.de efun.de/set_light.de
*** efun.de.orig/set_light.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_light.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  VERALTET, OPTIONAL
  SYNOPSIS
!         int set_light(int n);
  
  BESCHREIBUNG
          Ein Objekt ist standardmaessig dunkel. Man kann es jedoch zum
--- 1,6 ----
  VERALTET, OPTIONAL
  SYNOPSIS
!         int set_light(int n)
  
  BESCHREIBUNG
          Ein Objekt ist standardmaessig dunkel. Man kann es jedoch zum
***************
*** 12,18 ****
          Es ist zu beachten, dass der Wert des Arguments <n> zur Helligkeit
          des momentanen Objekts hinzuaddiert wird.
  
! BUGS
          Diese Verarbeitung von Licht durch den Parser fuehrt in den meisten
          Faellen zu unerwuenschten Ergebnissen. So fuehrt eine Kerze, die man
!         in einen Safe stellt dazu, dass der Safe zu leuchten beginnt.
--- 12,18 ----
          Es ist zu beachten, dass der Wert des Arguments <n> zur Helligkeit
          des momentanen Objekts hinzuaddiert wird.
  
! FEHLER
          Diese Verarbeitung von Licht durch den Parser fuehrt in den meisten
          Faellen zu unerwuenschten Ergebnissen. So fuehrt eine Kerze, die man
!         in einen Safe stellt, dazu, dass der Safe zu leuchten beginnt.
diff -c efun.de.orig/set_limits.de efun.de/set_limits.de
*** efun.de.orig/set_limits.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_limits.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,13 ****
  VORLAEUFIG, GESCHUETZT
  SYNOPSIS
!         #include <sys/rtlimits.h>
  
!         void set_limits(int tag, int value...);
!         void set_limits(int *limits);
  
  BESCHREIBUNG
!         Setzt die standardmaessigen Laufzeitlimiten entsprechend den
!         angegebenen Argumenten. Die neuen Limiten treten als 'max limits'
          mit Beginn des naechsten Ausfuehrungszyklus in Kraft.
  
          Die Argumente koennen in zwei Formen angegeben werden: als ein Array
--- 1,13 ----
  VORLAEUFIG, GESCHUETZT
  SYNOPSIS
!         #include <rtlimits.h>
  
!         void set_limits(int tag, int value...)
!         void set_limits(int *limits)
  
  BESCHREIBUNG
!         Setzt die standardmaessigen Laufzeitlimits entsprechend den
!         angegebenen Argumenten. Die neuen Limits treten als 'max limits'
          mit Beginn des naechsten Ausfuehrungszyklus in Kraft.
  
          Die Argumente koennen in zwei Formen angegeben werden: als ein Array
***************
*** 20,38 ****
          Die Efun verursacht eine Schutzverletzung ("set_limits",
          current_object, first).
  
  BEISPIELE
!         set_limits( ({ 200000 }) );
!         set_limits( LIMIT_EVAL, 200000 );
              --> setzt das Limit fuer Eval-Kosten auf 200000.
  
!         set_limits( ({ LIMIT_UNLIMITED, LIMIT_KEEP, 5000 }) );
!         set_limits( LIMIT_EVAL, LIMIT_UNLIMITED, LIMIT_ARRAY, LIMIT_KEEP,
!                     LIMIT_MAPPING, 5000);
              --> setzt die maximalen Eval-Kosten auf unlimitiert, behaelt das
!                 Limit fuer die Array-Groesse und setzt die maximal
                  Mappinggroesse auf 5000.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.7.
  
  SIEHE AUCH
--- 20,39 ----
          Die Efun verursacht eine Schutzverletzung ("set_limits",
          current_object, first).
  
+ 
  BEISPIELE
!         set_limits(({ 200000 }));
!         set_limits(LIMIT_EVAL, 200000);
              --> setzt das Limit fuer Eval-Kosten auf 200000.
  
!         set_limits(({ LIMIT_UNLIMITED, LIMIT_KEEP, 5000 }));
!         set_limits(LIMIT_EVAL, LIMIT_UNLIMITED, LIMIT_ARRAY, LIMIT_KEEP,
!                    LIMIT_MAPPING, 5000);
              --> setzt die maximalen Eval-Kosten auf unlimitiert, behaelt das
!                 Limit fuer die Array-Groesse bei und setzt die maximale
                  Mappinggroesse auf 5000.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.7.
  
  SIEHE AUCH
diff -c efun.de.orig/set_max_commands.de efun.de/set_max_commands.de
*** efun.de.orig/set_max_commands.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_max_commands.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT
  SYNOPSIS
!         void set_max_commands(int num);
!         void set_max_commands(int num, object obj);
  
  BESCHREIBUNG
          Setzt die maximale Anzahl Befehle, die vom Benutzer <obj> pro Sekunde
--- 1,7 ----
  GESCHUETZT
  SYNOPSIS
!         void set_max_commands(int num)
!         void set_max_commands(int num, object obj)
  
  BESCHREIBUNG
          Setzt die maximale Anzahl Befehle, die vom Benutzer <obj> pro Sekunde
***************
*** 20,34 ****
          das einen LPC-Aufruf ausloest; sowohl Aktionen wie auch Aufrufe
          von input_to().
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.10
! 
! BEISPIEL
          Um einen mudweiten Standard fuer die maximale Anzahl Befehle pro
          Sekunde zu setzen, muss master::connect() folgendermassen aussehen:
  
!         object connect ()
!         {
              object obj;
              ...
              set_max_commands(100);
--- 20,30 ----
          das einen LPC-Aufruf ausloest; sowohl Aktionen wie auch Aufrufe
          von input_to().
  
! BEISPIELE
          Um einen mudweiten Standard fuer die maximale Anzahl Befehle pro
          Sekunde zu setzen, muss master::connect() folgendermassen aussehen:
  
!         object connect() {
              object obj;
              ...
              set_max_commands(100);
***************
*** 39,43 ****
          veraenderten max_commands vom Masterobjekt zurueck zum zurueck
          gelieferten Objekt <obj>.
  
  SIEHE AUCH
!         privilege_violation(M)x
--- 35,42 ----
          veraenderten max_commands vom Masterobjekt zurueck zum zurueck
          gelieferten Objekt <obj>.
  
+ GESCHICHTE
+         Eingefuehrt in LDMud 3.2.10.
+ 
  SIEHE AUCH
!         privilege_violation(M)
diff -c efun.de.orig/set_modify_command.de efun.de/set_modify_command.de
*** efun.de.orig/set_modify_command.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_modify_command.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         object set_modify_command(object obj);
!         object set_modify_command(string obj);
!         object set_modify_command(int int);
  
  SYNOPSIS
          Alle Befehle fuer das aktuelle Objekt (das natuerlich interaktiv sein
--- 1,7 ----
  SYNOPSIS
!         object set_modify_command(object obj)
!         object set_modify_command(string obj)
!         object set_modify_command(int int)
  
  SYNOPSIS
          Alle Befehle fuer das aktuelle Objekt (das natuerlich interaktiv sein
***************
*** 24,31 ****
          auszuwerten. Genauere Informationen finden sich unter hooks(C)
          H_MODIFY_COMMAND_FNAME.
  
! AENDERUNGEN
!         Bis 3.2.1@108 war die Lfun direkt als modify_command geschrieben.
          Der Hook H_MODIFY_COMMAND_FNAME wurde in 3.2.1@109 eingefuehrt und
          erlaubt, den Namen zu aendern.
  
--- 24,31 ----
          auszuwerten. Genauere Informationen finden sich unter hooks(C)
          H_MODIFY_COMMAND_FNAME.
  
! GESCHICHTE
!         Bis 3.2.1@108 wurde die Lfun direkt als modify_command() geschrieben.
          Der Hook H_MODIFY_COMMAND_FNAME wurde in 3.2.1@109 eingefuehrt und
          erlaubt, den Namen zu aendern.
  
diff -c efun.de.orig/set_next_reset.de efun.de/set_next_reset.de
*** efun.de.orig/set_next_reset.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_next_reset.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int set_next_reset(int delay);
  
  BESCHREIBUNG
          Weist den Gamedriver an, im Objekt nicht vor Ablauf von <delay>
--- 1,5 ----
  SYNOPSIS
!         int set_next_reset(int delay)
  
  BESCHREIBUNG
          Weist den Gamedriver an, im Objekt nicht vor Ablauf von <delay>
***************
*** 18,26 ****
  
  BEISPIELE
          set_next_reset(15*60);      Der naechste Reset erfolgt nach
!                                     fruehstens 15 Minuten.
          set_next_reset(0);          Gibt die verbleibende Zeit zum naechsten
                                      Reset zurueck.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6, angepasst von Morgengrauen.
--- 18,26 ----
  
  BEISPIELE
          set_next_reset(15*60);      Der naechste Reset erfolgt nach
!                                     fruehestens 15 Minuten.
          set_next_reset(0);          Gibt die verbleibende Zeit zum naechsten
                                      Reset zurueck.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6, angepasst von Morgengrauen.
diff -c efun.de.orig/set_prompt.de efun.de/set_prompt.de
*** efun.de.orig/set_prompt.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_prompt.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string set_prompt(mixed prompt, object obj);
  
  BESCHREIBUNG
          Setzt den Prompt entsprechend dem Argument <prompt> fuer das
--- 1,5 ----
  SYNOPSIS
!         string set_prompt(mixed prompt, object obj)
  
  BESCHREIBUNG
          Setzt den Prompt entsprechend dem Argument <prompt> fuer das
diff -c efun.de.orig/set_this_object.de efun.de/set_this_object.de
*** efun.de.orig/set_this_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_this_object.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         void set_this_object(object objekt-an-stelle-von-originalobjekt);
  
  BESCHREIBUNG
          Dies ist eine geschuetzte Funktion, die nur vom Master-Objekt und im
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         void set_this_object(object objekt-an-stelle-von-originalobjekt)
  
  BESCHREIBUNG
          Dies ist eine geschuetzte Funktion, die nur vom Master-Objekt und im
***************
*** 12,22 ****
          anderen Objekten, die einen call_other() Aufruf machen.
  
          Der Effekt von set_this_object() bleibt bestehen, bis ein externer
!         Funktionsaufruf abgeschlossen ist oder bis zu einem erneuten
!         set_this_object(). Waehrend der Ausfuehrung von Code im Master-Objekt
!         oder im Simul-Efun-Objekt ist set_this_object() garantiert, auch wenn
!         this_object() durch set_this_object() veraendert wird. Die gilt
!         nicht fuer Funktionen, die aus anderen Programmen inheritet werden.
  
          Diese Funktion darf nur mit hoechster Sorgfalt verwendet werden, um
          Inkonsistenzen zu vermeiden. Nach einem Aufruf von set_this_object()
--- 12,23 ----
          anderen Objekten, die einen call_other() Aufruf machen.
  
          Der Effekt von set_this_object() bleibt bestehen, bis ein externer
!         Funktionsaufruf abgeschlossen ist oder bis zu einem erneuten Aufruf
!         von set_this_object(). Waehrend der Ausfuehrung von Code im
!         Master-Objekt oder im Simul-Efun-Objekt ist set_this_object()
!         garantiert, auch wenn this_object() durch set_this_object()
!         veraendert wird. Die gilt nicht fuer Funktionen, die aus anderen
!         Programmen geerbt werden.
  
          Diese Funktion darf nur mit hoechster Sorgfalt verwendet werden, um
          Inkonsistenzen zu vermeiden. Nach einem Aufruf von set_this_object()
***************
*** 29,35 ****
          (die auch Pointers auf globale Arrays enthalten duerfen), einfache
          Arithmetik und der Zuweisungs-Operator.
  
! BUGS
          Es ist momentan nicht moeglich, das originale gueltige Objekt wieder
          herzustellen. Anstelle von:
  
--- 30,36 ----
          (die auch Pointers auf globale Arrays enthalten duerfen), einfache
          Arithmetik und der Zuweisungs-Operator.
  
! FEHLER
          Es ist momentan nicht moeglich, das originale gueltige Objekt wieder
          herzustellen. Anstelle von:
  
***************
*** 41,48 ****
  
          muss das ueber einen Umweg geloest werden:
  
!             private void tuwas(object dings)
!             {
                  set_this_object(dings);
                  <irgendwelcher code>
              }
--- 42,48 ----
  
          muss das ueber einen Umweg geloest werden:
  
!             private void tuwas(object dings) {
                  set_this_object(dings);
                  <irgendwelcher code>
              }
***************
*** 52,60 ****
  
          Manche Leute bezeichnen das als Feature.
  
! AENDERUNGEN
          LDMud 3.2.10 verhindert aktiv die Referenz auf globale Variablen und
!             Funktionsaufrufe nach Adresse, waehren set_this_object() gilt.
  
  SIEHE AUCH
          this_object(E), set_this_player(E)
--- 52,60 ----
  
          Manche Leute bezeichnen das als Feature.
  
! GESCHICHTE
          LDMud 3.2.10 verhindert aktiv die Referenz auf globale Variablen und
!             Funktionsaufrufe nach Adresse, waehrend set_this_object() gilt.
  
  SIEHE AUCH
          this_object(E), set_this_player(E)
diff -c efun.de.orig/set_this_player.de efun.de/set_this_player.de
*** efun.de.orig/set_this_player.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/set_this_player.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         void set_this_player(object ob);
  
  BESCHREIBUNG
          Aendert den momentanen Kommandogeber zu <ob>. Dabei kann <ob> auch
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         void set_this_player(object ob)
  
  BESCHREIBUNG
          Aendert den momentanen Kommandogeber zu <ob>. Dabei kann <ob> auch
***************
*** 12,29 ****
          Es ist sonst einfach, die Sicherheit eines Muds mit Hilfe dieser
          Efun zu untergraben.
  
!         Die Efun ist nur in 3.2.1 verfuegbar. Eine moegliche Simulation fuer
!         3.2 koennte etwa so aussehen:
! 
!             void set_this_player(object ob)
!             {
!                 /* Insert your privilege checks here */
!                 if (living(ob))
!                     funcall(bind_lambda(#'enable_commands, ob));
!             }
!             (suggested by Mark Lewis (Nostradamus@Zebedee))
! 
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.1.
          LDMud 3.2.6 fuehrte die 0 als moeglichen Parameter ein.
  
--- 12,18 ----
          Es ist sonst einfach, die Sicherheit eines Muds mit Hilfe dieser
          Efun zu untergraben.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.1.
          LDMud 3.2.6 fuehrte die 0 als moeglichen Parameter ein.
  
diff -c efun.de.orig/sgn.de efun.de/sgn.de
*** efun.de.orig/sgn.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/sgn.de	2009-11-02 22:26:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int sgn (int|float arg)
  
  BESCHREIBUNG
          Liefert das Vorzeichen des Argumentes.
--- 1,5 ----
  SYNOPSIS
!         int sgn(int|float arg)
  
  BESCHREIBUNG
          Liefert das Vorzeichen des Argumentes.
***************
*** 10,16 ****
            0   0
          < 0  -1
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
--- 10,16 ----
            0   0
          < 0  -1
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
diff -c efun.de.orig/shadow.de efun.de/shadow.de
*** efun.de.orig/shadow.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/shadow.de	2009-11-02 22:26:07.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object shadow(object obj, int flag);
  
  BESCHREIBUNG
          Wenn <flag> nicht 0 ist, wird das aktuelle Objekt dem Objekt obj
--- 1,5 ----
  SYNOPSIS
!         object shadow(object obj, int flag)
  
  BESCHREIBUNG
          Wenn <flag> nicht 0 ist, wird das aktuelle Objekt dem Objekt obj
***************
*** 30,57 ****
          Hingegen werden alle normalen (internen) Funktionsaufrufe innerhalb
          von B werden wie gewohnt innerhalb von B bearbeitet.
  
! BEISPIEL
!         Mir drei Objekten a.c, b.c und c.c:
  
          --- a.c ---
!             void fun()
!             {
                  debug_message(sprintf("%O [a] fun()\n", this_object()));
              }
! 
!             void fun3()
!             {
                  debug_message(sprintf("%O [a] fun3()\n", this_object()));
              }
  
          --- b.c ---
!             int fun()
!             {
                  debug_message(sprintf("%O [b] fun()\n", this_object()));
                  find_object("a")->fun();
              }
!             void fun2()
!             {
                  debug_message(sprintf("%O [b] fun2()\n", this_object()));
                  find_object("a")->fun3();
                  this_object()->fun3();
--- 30,52 ----
          Hingegen werden alle normalen (internen) Funktionsaufrufe innerhalb
          von B werden wie gewohnt innerhalb von B bearbeitet.
  
! BEISPIELE
!         Mit drei Objekten a.c, b.c und c.c:
  
          --- a.c ---
!             void fun() {
                  debug_message(sprintf("%O [a] fun()\n", this_object()));
              }
!             void fun3() {
                  debug_message(sprintf("%O [a] fun3()\n", this_object()));
              }
  
          --- b.c ---
!             int fun() {
                  debug_message(sprintf("%O [b] fun()\n", this_object()));
                  find_object("a")->fun();
              }
!             void fun2() {
                  debug_message(sprintf("%O [b] fun2()\n", this_object()));
                  find_object("a")->fun3();
                  this_object()->fun3();
***************
*** 60,72 ****
              void do_shadow(object target) { shadow(target, 1); }
  
          --- c.c ---
!             int fun()
!             {
                  debug_message(sprintf("%O [c] fun()\n", this_object()));
                  find_object("a")->fun();
              }
!             void fun3()
!             {
                  debug_message(sprintf("%O [c] fun3()\n", this_object()));
              }
              void do_shadow(object target) { shadow(target, 1); }
--- 55,65 ----
              void do_shadow(object target) { shadow(target, 1); }
  
          --- c.c ---
!             int fun() {
                  debug_message(sprintf("%O [c] fun()\n", this_object()));
                  find_object("a")->fun();
              }
!             void fun3() {
                  debug_message(sprintf("%O [c] fun3()\n", this_object()));
              }
              void do_shadow(object target) { shadow(target, 1); }
***************
*** 114,120 ****
              zweite Aufruf hingegen ergeht an b selbst, das der Treiber als
              vom Shadow c ueberlagert erkennt.
  
! AENDERUNGEN
          Bis 3.2.1@46 fuehrte die Zerstoerung eines Objekts, dem ein Shadow
              uebergeworfen war, auch zur Zerstoerung aller seiner Shadows.
          Seit 3.2.1@47 ueberleben Shadows die Zerstoerung des Objektes, dem
--- 107,113 ----
              zweite Aufruf hingegen ergeht an b selbst, das der Treiber als
              vom Shadow c ueberlagert erkennt.
  
! GESCHICHTE
          Bis 3.2.1@46 fuehrte die Zerstoerung eines Objekts, dem ein Shadow
              uebergeworfen war, auch zur Zerstoerung aller seiner Shadows.
          Seit 3.2.1@47 ueberleben Shadows die Zerstoerung des Objektes, dem
diff -c efun.de.orig/shutdown.de efun.de/shutdown.de
*** efun.de.orig/shutdown.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/shutdown.de	2009-11-02 22:26:07.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         void shutdown();
!         void shutdown(int exit_code);
  
  BESCHREIBUNG
          Faehrt das Mud herunter. Diese Funktion darf nie verwendet werden!
--- 1,6 ----
  SYNOPSIS
!         void shutdown()
!         void shutdown(int exit_code)
  
  BESCHREIBUNG
          Faehrt das Mud herunter. Diese Funktion darf nie verwendet werden!
***************
*** 14,20 ****
          wenn man sie nicht verwenden darf. Sorry, das darf hier nicht
          bekannt gegeben werden. Streng geheim.
  
! AENDERUNGEN
          LDMud 3.2.11 fuehrte das 'exit_code' Argument ein.
  
  SIEHE AUCH
--- 14,20 ----
          wenn man sie nicht verwenden darf. Sorry, das darf hier nicht
          bekannt gegeben werden. Streng geheim.
  
! GESCHICHTE
          LDMud 3.2.11 fuehrte das 'exit_code' Argument ein.
  
  SIEHE AUCH
diff -c efun.de.orig/sin.de efun.de/sin.de
*** efun.de.orig/sin.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/sin.de	2009-11-02 22:26:07.000000000 +0000
***************
*** 4,10 ****
  BESCHREIBUNG
          Liefert den Sinus des Argumentes.
  
! AENDERUNGEN
          LDMud 3.2.9: Ganzzahlen (Integers) als Argument hinzugefuegt.
  
  SIEHE AUCH
--- 4,10 ----
  BESCHREIBUNG
          Liefert den Sinus des Argumentes.
  
! GESCHICHTE
          LDMud 3.2.9: Ganzzahlen (Integers) als Argument hinzugefuegt.
  
  SIEHE AUCH
diff -c efun.de.orig/sizeof.de efun.de/sizeof.de
*** efun.de.orig/sizeof.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/sizeof.de	2009-11-02 22:26:07.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         int sizeof(mixed * val);
!         int sizeof(string  val);
!         int sizeof(mapping val);
  
  BESCHREIBUNG
          Liefert die Anzahl Elemente in einem Array <val>, die Anzahl
--- 1,7 ----
  SYNOPSIS
!         int sizeof(mixed * val)
!         int sizeof(string  val)
!         int sizeof(mapping val)
  
  BESCHREIBUNG
          Liefert die Anzahl Elemente in einem Array <val>, die Anzahl
***************
*** 11,17 ****
          Als Spezialfall kann <val> auch 0 sein. In diesem Fall liefert die
          Funktion 0 zurueck.
  
! AENDERUNGEN
          LDMud 3.2.9 fuehrte Strings als moegliche Attribute ein.
  
  SIEHE AUCH
--- 11,17 ----
          Als Spezialfall kann <val> auch 0 sein. In diesem Fall liefert die
          Funktion 0 zurueck.
  
! GESCHICHTE
          LDMud 3.2.9 fuehrte Strings als moegliche Attribute ein.
  
  SIEHE AUCH
diff -c efun.de.orig/snoop.de efun.de/snoop.de
*** efun.de.orig/snoop.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/snoop.de	2009-11-02 22:26:09.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT
  SYNOPSIS
!         int snoop(object snooper);
!         int snoop(object snooper, object snoopee);
  
  BESCHREIBUNG
          Beginnt die Beobachtung des Objekts <snoopee> durch <snooper>. Wenn
--- 1,7 ----
  GESCHUETZT
  SYNOPSIS
!         int snoop(object snooper)
!         int snoop(object snooper, object snoopee)
  
  BESCHREIBUNG
          Beginnt die Beobachtung des Objekts <snoopee> durch <snooper>. Wenn
diff -c efun.de.orig/sort_array.de efun.de/sort_array.de
*** efun.de.orig/sort_array.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/sort_array.de	2009-11-02 22:26:09.000000000 +0000
***************
*** 1,10 ****
  SYNOPSIS
!         mixed *sort_array(mixed *arr, string wrong_order)
!         mixed *sort_array(mixed *arr, string wrong_order, object|string ob)
!         mixed *sort_array(mixed *arr, string wrong_order, object|string ob
!             , mixed extra...)
!         mixed *sort_array(mixed *arr, closure cl)
!         mixed *sort_array(mixed *arr, closure cl, mixed extra...)
  
  BESCHREIBUNG
          Erzeugt eine flache Kopie des Arrays <arr> und sortiert die Kopie
--- 1,10 ----
  SYNOPSIS
!         mixed * sort_array(mixed *arr, string wrong_order)
!         mixed * sort_array(mixed *arr, string wrong_order, object|string ob)
!         mixed * sort_array(mixed *arr, string wrong_order, object|string ob,
!                              mixed extra...)
!         mixed * sort_array(mixed *arr, closure cl)
!         mixed * sort_array(mixed *arr, closure cl, mixed extra...)
  
  BESCHREIBUNG
          Erzeugt eine flache Kopie des Arrays <arr> und sortiert die Kopie
***************
*** 31,49 ****
  
              arr = ({ 3, 8, 1, 3 })
  
!         wird als Ordnungsfunktion is_greater() verwendet:
  
!             int is_greater (int a, int b)
!             {
                  return a > b;
              }
  
          Folgende Aufrufe von sort_array() sind alle aequivalent:
  
!             sort_array(arr, "is_greater", this_object())
!             sort_array(arr, "is_greater")
!             sort_array(arr, #'is_greater)
!             sort_array(arr, #'>)  (this is the preferred variant :-)
              sort_array(arr, lambda(({'a, 'b}), ({#'>, 'a, 'b})))
  
          Etwas komplizierter ist es, folgendes Array aufsteigend nach dem
--- 31,48 ----
  
              arr = ({ 3, 8, 1, 3 })
  
!         wird als Ordnungsfunktion ist_groesser() verwendet:
  
!             int ist_groesser(int a, int b) {
                  return a > b;
              }
  
          Folgende Aufrufe von sort_array() sind alle aequivalent:
  
!             sort_array(arr, "ist_groesser", this_object())
!             sort_array(arr, "ist_groesser")
!             sort_array(arr, #'ist_groesser)
!             sort_array(arr, #'>)  // dies ist die bevorzugte Variante :-)
              sort_array(arr, lambda(({'a, 'b}), ({#'>, 'a, 'b})))
  
          Etwas komplizierter ist es, folgendes Array aufsteigend nach dem
***************
*** 53,64 ****
  
          Dafuer muss die Ordnungsfunktion folgende Form annehmen:
  
!             int is_greater (mixed *a, mixed *b)
!             {
                  return a[1] > b[1];
              }
  
! AENDERUNGEN
          LDMud 3.2.8 fuehrte die Moeglichkeit ein, zusaetzliche Argumente
              <extra> zu uebergeben.
  
--- 52,62 ----
  
          Dafuer muss die Ordnungsfunktion folgende Form annehmen:
  
!             int ist_groesser(mixed *a, mixed *b) {
                  return a[1] > b[1];
              }
  
! GESCHICHTE
          LDMud 3.2.8 fuehrte die Moeglichkeit ein, zusaetzliche Argumente
              <extra> zu uebergeben.
  
diff -c efun.de.orig/sprintf.de efun.de/sprintf.de
*** efun.de.orig/sprintf.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/sprintf.de	2009-11-02 23:20:23.000000000 +0000
***************
*** 143,147 ****
            Wenn string* worte die in die Tabelle einzubettenden Worte
            enthaelt, so muss str=implode(worte,"\n") sein.
  
! SIEHE AUCH:
          printf(E)
--- 143,147 ----
            Wenn string* worte die in die Tabelle einzubettenden Worte
            enthaelt, so muss str=implode(worte,"\n") sein.
  
! SIEHE AUCH
          printf(E)
diff -c efun.de.orig/sqrt.de efun.de/sqrt.de
*** efun.de.orig/sqrt.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/sqrt.de	2009-11-02 22:26:09.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         float sqrt(int value);
!         float sqrt(floag value);
  
  BESCHREIBUNG
          Liefert die Quadratwurzel von <value>.
  
! AENDERUNGEN
          LDMud 3.2.9 fuehrte integer als moegliche Argumente ein.
--- 1,9 ----
  SYNOPSIS
!         float sqrt(int value)
!         float sqrt(floag value)
  
  BESCHREIBUNG
          Liefert die Quadratwurzel von <value>.
  
! GESCHICHTE
          LDMud 3.2.9 fuehrte integer als moegliche Argumente ein.
diff -c efun.de.orig/sscanf.de efun.de/sscanf.de
*** efun.de.orig/sscanf.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/sscanf.de	2009-11-02 22:26:09.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int sscanf(string str, string fmt, mixed var1, mixed var2, ...);
  
  BESCHREIBUNG
          Wertet einen String <str> unter Beruecksichtigung des Formats
--- 1,5 ----
  SYNOPSIS
!         int sscanf(string str, string fmt, mixed var1, mixed var2, ...)
  
  BESCHREIBUNG
          Wertet einen String <str> unter Beruecksichtigung des Formats
***************
*** 53,59 ****
          Die Funktion sscanf() ist insofern ein Spezialfall, als dass
          Argumente automatisch nach Referenz uebergeben werden.
  
! BEISPIEL
          string who, what;
              if (sscanf("wirf frisbee zu rex",
                  "wirf %s zu %s", what, who) != 2)
--- 53,59 ----
          Die Funktion sscanf() ist insofern ein Spezialfall, als dass
          Argumente automatisch nach Referenz uebergeben werden.
  
! BEISPIELE
          string who, what;
              if (sscanf("wirf frisbee zu rex",
                  "wirf %s zu %s", what, who) != 2)
diff -c efun.de.orig/start_mccp_compress.de efun.de/start_mccp_compress.de
*** efun.de.orig/start_mccp_compress.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/start_mccp_compress.de	2009-11-02 22:26:09.000000000 +0000
***************
*** 18,22 ****
--- 18,28 ----
          MCCP-Unterstuetzung compiliert wurde. In diesem Fall ist das Makro
          __MCCP__ definiert.
  
+ GESCHICHTE
+         Hinzugefuegt in LDMud 3.3.447, rueckportiert nach LDMud 3.2.10.
+         LDMud 3.3.666 fuegte die Moeglichkeit der Kompression des ausgehenden
+             Datenverkehrs hinzu, falls die Telnetmaschine enabled ist
+             (diese Moeglichkeit wurde nicht rueckportiert).
+ 
  SIEHE AUCH
          end_mccp_compress(E), query_mccp(E), query_mccp_stats(E), mccp(C)
diff -c efun.de.orig/strlen.de efun.de/strlen.de
*** efun.de.orig/strlen.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/strlen.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int strlen(string str);
  
  BESCHREIBUNG
          Liefert die Laenge eines Strings.
--- 1,5 ----
  SYNOPSIS
!         int strlen(string str)
  
  BESCHREIBUNG
          Liefert die Laenge eines Strings.
diff -c efun.de.orig/strrstr.de efun.de/strrstr.de
*** efun.de.orig/strrstr.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/strrstr.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int strrstr(string str, string muster);
!         int strrstr(string str, string muster, int pos);
  
  BESCHREIBUNG:
          Liefert den Index des ersten Auftretens von <muster> im String <str>,
--- 1,6 ----
  SYNOPSIS
!         int strrstr(string str, string muster)
!         int strrstr(string str, string muster, int pos)
  
  BESCHREIBUNG:
          Liefert den Index des ersten Auftretens von <muster> im String <str>,
***************
*** 18,25 ****
          Strings aus gezaehlt. Dabei wird die Suche aber dennoch rueckwaerts
          im String <str> durchgefuehrt.
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.10
  
  SIEHE AUCH
          strstr(E), strlen(E), sscanf(E), sprintf(E), explode(E)
--- 18,25 ----
          Strings aus gezaehlt. Dabei wird die Suche aber dennoch rueckwaerts
          im String <str> durchgefuehrt.
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
          strstr(E), strlen(E), sscanf(E), sprintf(E), explode(E)
diff -c efun.de.orig/strstr.de efun.de/strstr.de
*** efun.de.orig/strstr.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/strstr.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int strstr(string str, string muster);
!         int strstr(string str, string muster, int pos);
  
  BESCHREIBUNG
          Liefert den Index des ersten Auftretens von <muster> in <str>,
--- 1,6 ----
  SYNOPSIS
!         int strstr(string str, string muster)
!         int strstr(string str, string muster, int pos)
  
  BESCHREIBUNG
          Liefert den Index des ersten Auftretens von <muster> in <str>,
***************
*** 8,14 ****
          wird. Wird <pos> nicht angegeben, wird als Standardwert 0 gesetzt,
          also vom Beginn von <str> her gesucht.
  
!         Wenn <muster> nicht gefunden wird, wird -1 zurueck geliefert.
  
          Wenn <pos> negativ ist, bezeichnet <pos> die Startposition der Suche
          relativ zum Ende von <str>, es wird aber weiterhin vorwaerts gesucht.
--- 8,14 ----
          wird. Wird <pos> nicht angegeben, wird als Standardwert 0 gesetzt,
          also vom Beginn von <str> her gesucht.
  
!         Wenn <muster> nicht gefunden wird, wird -1 zurueckgeliefert.
  
          Wenn <pos> negativ ist, bezeichnet <pos> die Startposition der Suche
          relativ zum Ende von <str>, es wird aber weiterhin vorwaerts gesucht.
Common subdirectories: efun.de.orig/.svn and efun.de/.svn
diff -c efun.de.orig/swap.de efun.de/swap.de
*** efun.de.orig/swap.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/swap.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,6 ****
  GESCHUETZT
  SYNOPSIS
!         void swap(object obj);
  
  BESCHREIBUNG
          Lagert ein Objekt aus. Diese Efun ist nur fuer systeminternes
--- 1,6 ----
  GESCHUETZT
  SYNOPSIS
!         void swap(object obj)
  
  BESCHREIBUNG
          Lagert ein Objekt aus. Diese Efun ist nur fuer systeminternes
diff -c efun.de.orig/symbol_function.de efun.de/symbol_function.de
*** efun.de.orig/symbol_function.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/symbol_function.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         closure symbol_function(symbol arg);
!         closrue symbol_function(string arg);
!         closure symbol_function(string arg, object|string obj);
  
  BESCHREIBUNG
          Erzeugt eine Lfun-, Efun- oder Operator-Closure aus <arg>, wobei
--- 1,7 ----
  SYNOPSIS
!         closure symbol_function(symbol arg)
!         closure symbol_function(string arg)
!         closure symbol_function(string arg, object|string obj)
  
  BESCHREIBUNG
          Erzeugt eine Lfun-, Efun- oder Operator-Closure aus <arg>, wobei
***************
*** 28,34 ****
          symbol_function("QueryProp", other_obj);
              --> ergibt: other_obj->QueryProp()
  
! AENDERUNGEN
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
--- 28,34 ----
          symbol_function("QueryProp", other_obj);
              --> ergibt: other_obj->QueryProp()
  
! GESCHICHTE
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
diff -c efun.de.orig/symbolp.de efun.de/symbolp.de
*** efun.de.orig/symbolp.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/symbolp.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 4,13 ****
  BESCHREIBUNG
          Liefert 1, wenn das Argument ein Symbol ist, ansonsten 0.
  
! BEISPIEL
          symbolp('foo) liefert 1.
  
! AENDERUNGEN
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
--- 4,13 ----
  BESCHREIBUNG
          Liefert 1, wenn das Argument ein Symbol ist, ansonsten 0.
  
! BEISPIELE
          symbolp('foo) liefert 1.
  
! GESCHICHTE
          Eingefuehrt in 3.2@70.
  
  SIEHE AUCH
diff -c efun.de.orig/symbol_variable.de efun.de/symbol_variable.de
*** efun.de.orig/symbol_variable.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/symbol_variable.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         closure symbol_variable(string arg);
!         closure symbol_variable(symbol arg);
!         closure symbol_variable(int arg);
  
  BESCHREIBUNG
          Erzeugt eine Identifier (Lfun) Closure aus der globalen Variablen
--- 1,7 ----
  SYNOPSIS
!         closure symbol_variable(string arg)
!         closure symbol_variable(symbol arg)
!         closure symbol_variable(int arg)
  
  BESCHREIBUNG
          Erzeugt eine Identifier (Lfun) Closure aus der globalen Variablen
***************
*** 16,29 ****
          bezieht, die im geerbten Objekt "private" deklariert ist (d.h.
          versteckt), fuehrt dies zu einer Schutzverletzung.
  
- AENDERUNGEN
-         Eingefuehrt in 3.2.1@8
- 
  BEISPIELE
          int base;
          int var;
          symbol_variable("var");         ergibt: #'<this_object>->var
          symbol_variable(0);             ergibt: #'<this_object>->base
  
  SIEHE AUCH
          lambda(E), quote(E), symbol_function(E)
--- 16,29 ----
          bezieht, die im geerbten Objekt "private" deklariert ist (d.h.
          versteckt), fuehrt dies zu einer Schutzverletzung.
  
  BEISPIELE
          int base;
          int var;
          symbol_variable("var");         ergibt: #'<this_object>->var
          symbol_variable(0);             ergibt: #'<this_object>->base
  
+ GESCHICHTE
+         Eingefuehrt in 3.2.1@8.
+ 
  SIEHE AUCH
          lambda(E), quote(E), symbol_function(E)
diff -c efun.de.orig/tail.de efun.de/tail.de
*** efun.de.orig/tail.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/tail.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         void tail(string file);
  
  BESCHREIBUNG
          Listet das Ende eines Files. Es gibt kein Zeilenlimit, es werden aber
--- 1,5 ----
  SYNOPSIS
!         void tail(string file)
  
  BESCHREIBUNG
          Listet das Ende eines Files. Es gibt kein Zeilenlimit, es werden aber
diff -c efun.de.orig/tan.de efun.de/tan.de
*** efun.de.orig/tan.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/tan.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 4,10 ****
  BESCHREIBUNG
          Liefert den Tangens des Argumentes.
  
! AENDERUNGEN
          LDMud 3.2.9: Ganzzahlen (Integers) als Argument hinzugefuegt.
  
  SIEHE AUCH
--- 4,10 ----
  BESCHREIBUNG
          Liefert den Tangens des Argumentes.
  
! GESCHICHTE
          LDMud 3.2.9: Ganzzahlen (Integers) als Argument hinzugefuegt.
  
  SIEHE AUCH
diff -c efun.de.orig/tell_object.de efun.de/tell_object.de
*** efun.de.orig/tell_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/tell_object.de	2009-11-02 23:20:51.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         void tell_object(object|string obj, string str);
!         void tell_object(object|string obj, mixed * msg);
  
  BESCHREIBUNG
          Sendet einen Nachricht an das Objekt <obj> (das auch durch seinen
--- 1,6 ----
  SYNOPSIS
!         void tell_object(object|string obj, string str)
!         void tell_object(object|string obj, mixed * msg)
  
  BESCHREIBUNG
          Sendet einen Nachricht an das Objekt <obj> (das auch durch seinen
***************
*** 13,19 ****
          Ist die Nachricht ein Array, wird die lfun catch_msg() im Empfaenger
          aufgerufen.
  
! BEISPIEL
          Dies gibt ein einfaches "Hi!" an den Spieler Thomas aus:
  
              object wer;
--- 13,19 ----
          Ist die Nachricht ein Array, wird die lfun catch_msg() im Empfaenger
          aufgerufen.
  
! BEISPIELE
          Dies gibt ein einfaches "Hi!" an den Spieler Thomas aus:
  
              object wer;
***************
*** 25,38 ****
          mit Namen "Dummymonster", Objekt2 verteilt die Meldung:
  
          Objekt1:
!             void catch_tell(string str)
!             {
                  wirte("Erhaltener Text: "+str+"\n");
              }
  
          Objekt2:
!             void fun()
!             {
                  object wer;
                  wer = find_living("dummymonster");
                  tell_object(wer, "Folge mir, Sterblicher!\n");
--- 25,36 ----
          mit Namen "Dummymonster", Objekt2 verteilt die Meldung:
  
          Objekt1:
!             void catch_tell(string str) {
                  wirte("Erhaltener Text: "+str+"\n");
              }
  
          Objekt2:
!             void fun() {
                  object wer;
                  wer = find_living("dummymonster");
                  tell_object(wer, "Folge mir, Sterblicher!\n");
diff -c efun.de.orig/tell_room.de efun.de/tell_room.de
*** efun.de.orig/tell_room.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/tell_room.de	2009-11-02 23:17:18.000000000 +0000
***************
*** 1,9 ****
  VERALTET
  SYNOPSIS
!         void tell_room(string|object obj, string str);
!         void tell_room(string|object obj, string str, object *exclude);
          void tell_room(string|object obj, mixed *msg)
!         void tell_room(string|object obj, mixed *msg, object *exlcude);
  
  BESCHREIBUNG
          Gibt einen Text <str> an den Raum <obj> aus. <obj> kann auch der
--- 1,9 ----
  VERALTET
  SYNOPSIS
!         void tell_room(string|object obj, string str)
!         void tell_room(string|object obj, string str, object *exclude)
          void tell_room(string|object obj, mixed *msg)
!         void tell_room(string|object obj, mixed *msg, object *exclude)
  
  BESCHREIBUNG
          Gibt einen Text <str> an den Raum <obj> aus. <obj> kann auch der
***************
*** 14,21 ****
          wird der Text hier ausgewertet und nicht an den User ausgegeben.
          Wenn das Empfaengerobjekt mit seinem Namen angegeben ist, sucht der
          Driver das Objekt unter diesem Namen und laedt es, falls notwendig.
!         Wenn das Array <*exclude> angegeben ist, wird der Text an die
!         Objekte in <*exclude> nicht ausgegeben.
  
          Wenn das zweite Argument ein Array ist, wird in allen Lebewesen, die
          den Text erhalten, catch_msg() aufgerufen (statt catch_tell()).
--- 14,21 ----
          wird der Text hier ausgewertet und nicht an den User ausgegeben.
          Wenn das Empfaengerobjekt mit seinem Namen angegeben ist, sucht der
          Driver das Objekt unter diesem Namen und laedt es, falls notwendig.
!         Wenn das Array *exclude angegeben ist, wird der Text an die
!         Objekte in *exclude nicht ausgegeben.
  
          Wenn das zweite Argument ein Array ist, wird in allen Lebewesen, die
          den Text erhalten, catch_msg() aufgerufen (statt catch_tell()).
***************
*** 29,42 ****
          funktioniert.
  
          Objekt1 (ein Lebewesen):
!             void catch_tell(string str)
!             {
                  write("Empfangen: "+str+"\n");
              }
  
          Objekt2:
!             void fun()
!             {
                  tell_room(environment(this_player()), "Hallo Welt!\n");
              }
  
--- 29,40 ----
          funktioniert.
  
          Objekt1 (ein Lebewesen):
!             void catch_tell(string str) {
                  write("Empfangen: "+str+"\n");
              }
  
          Objekt2:
!             void fun() {
                  tell_room(environment(this_player()), "Hallo Welt!\n");
              }
  
diff -c efun.de.orig/terminal_colour.de efun.de/terminal_colour.de
*** efun.de.orig/terminal_colour.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/terminal_colour.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
          varargs string terminal_colour(string str,
                                         null | mapping | closure map,
!                                        int wrap, int indent);
  BESCHREIBUNG
          Ist <map> ein Wert ungleich 0, ersetzt diese Efun alle Farb-
          Definitionen der Form "%^KEY%^" (siehe unten fuer Details) im
--- 1,7 ----
  SYNOPSIS
          varargs string terminal_colour(string str,
                                         null | mapping | closure map,
!                                        int wrap, int indent)
  BESCHREIBUNG
          Ist <map> ein Wert ungleich 0, ersetzt diese Efun alle Farb-
          Definitionen der Form "%^KEY%^" (siehe unten fuer Details) im
***************
*** 63,70 ****
          und versucht dann jeden Teilstring als Farbschluessel zu behandeln.
          Dieses Verhalten laesst sich auch unter LPC erreichen:
  
!           string mudos_terminal_colour(string str, mapping ext, int w, int i)
!           {
              return terminal_colour("%^"+implode(explode(str, "%^")-({""})
                                                 ,"%^%^")
                                    , ext, w, i);
--- 63,69 ----
          und versucht dann jeden Teilstring als Farbschluessel zu behandeln.
          Dieses Verhalten laesst sich auch unter LPC erreichen:
  
!           string mudos_terminal_colour(string str, mapping ext, int w, int i) {
              return terminal_colour("%^"+implode(explode(str, "%^")-({""})
                                                 ,"%^%^")
                                    , ext, w, i);
***************
*** 113,119 ****
  
              "dies ist die erste Zeile\n   und dies ist die zweite Zeile"
  
! AENDERUNGEN
          Die Idee fuer diese Efun und die erste Implementierung stammen
          aus MudOS; die Strategie fuer das Erkennen von Schluesseln
          (eingeschlossen die pure Zeilenumbruch Funktion) wurde in
--- 112,118 ----
  
              "dies ist die erste Zeile\n   und dies ist die zweite Zeile"
  
! GESCHICHTE
          Die Idee fuer diese Efun und die erste Implementierung stammen
          aus MudOS; die Strategie fuer das Erkennen von Schluesseln
          (eingeschlossen die pure Zeilenumbruch Funktion) wurde in
diff -c efun.de.orig/test_bit.de efun.de/test_bit.de
*** efun.de.orig/test_bit.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/test_bit.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int test_bit(string str, int n);
  
  BESCHREIBUNG
          Gibt 0 oder 1 des <n>-ten Bits im String <str> zurueck.
--- 1,5 ----
  SYNOPSIS
!         int test_bit(string str, int n)
  
  BESCHREIBUNG
          Gibt 0 oder 1 des <n>-ten Bits im String <str> zurueck.
diff -c efun.de.orig/this_interactive.de efun.de/this_interactive.de
*** efun.de.orig/this_interactive.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/this_interactive.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         object this_interactive();
  
  BESCHREIBUNG
          Die Funktion gibt das momentane interaktive Objekt zurueck, falls
!         vorhanden, also dasjenige welches "die Entertaste gedrueckt hat".
  
  SIEHE AUCH
          this_player(E), previous_object(E), interactive(E), living(E)
--- 1,9 ----
  SYNOPSIS
!         object this_interactive()
  
  BESCHREIBUNG
          Die Funktion gibt das momentane interaktive Objekt zurueck, falls
!         vorhanden, also dasjenige, welches "die Entertaste gedrueckt hat".
  
  SIEHE AUCH
          this_player(E), previous_object(E), interactive(E), living(E)
diff -c efun.de.orig/this_object.de efun.de/this_object.de
*** efun.de.orig/this_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/this_object.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object this_object();
  
  BESCHREIBUNG
          Liefert den Objektpointer auf dieses Objekt. Der Pointer darf nicht
--- 1,5 ----
  SYNOPSIS
!         object this_object()
  
  BESCHREIBUNG
          Liefert den Objektpointer auf dieses Objekt. Der Pointer darf nicht
diff -c efun.de.orig/this_player.de efun.de/this_player.de
*** efun.de.orig/this_player.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/this_player.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,17 ****
  SYNOPSIS
!         object this_player();
  
  BESCHREIBUNG
          Liefert den momentanen Kommandogeber. Das kann ein interaktiver
          Bentzer oder ein lebendiges Objekt sein, zum Beispiel ein NPC.
  
!         Wenn die Funktion von innerhalb des heart_beat() eines nicht
          lebendigen Objekts aufgerufen wird, wird 0 zurueck gegeben.
  
! BEISPIEL
!         if(this_player() != this_interactive())
!         {
!             write("Hey, jemand zwingt uns, Kommandi auszufuehren!\n");
          }
  
  SIEHE AUCH
--- 1,16 ----
  SYNOPSIS
!         object this_player()
  
  BESCHREIBUNG
          Liefert den momentanen Kommandogeber. Das kann ein interaktiver
          Bentzer oder ein lebendiges Objekt sein, zum Beispiel ein NPC.
  
!         Wenn die Funktion innerhalb von heart_beat() eines nicht
          lebendigen Objekts aufgerufen wird, wird 0 zurueck gegeben.
  
! BEISPIELE
!         if (this_player() != this_interactive()) {
!             write("Hey, jemand zwingt uns, Kommandos auszufuehren!\n");
          }
  
  SIEHE AUCH
diff -c efun.de.orig/throw.de efun.de/throw.de
*** efun.de.orig/throw.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/throw.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,14 ****
  SYNOPSIS
!         void throw(mixed arg);
  
  BESCHREIBUNG
          Bricht die Programmverarbeitung ab. Wenn die Verarbeitung mit catch()
          gestartet wurde, gibt dieses catch() <arg> als Fehlermeldung aus.
  
!         Der Aufruf von throw() ohne vorheriges catch() macht keine Sinn und
          erzeugt einen "throw without catch" Fehler.
  
! BEISPIEL
          catch(throw("Verarbeitung abgebrochen!"));
          Das macht nichts als "Verarbeitung abgebrochen!" auszugeben.
  
--- 1,14 ----
  SYNOPSIS
!         void throw(mixed arg)
  
  BESCHREIBUNG
          Bricht die Programmverarbeitung ab. Wenn die Verarbeitung mit catch()
          gestartet wurde, gibt dieses catch() <arg> als Fehlermeldung aus.
  
!         Der Aufruf von throw() ohne vorheriges catch() macht keinen Sinn und
          erzeugt einen "throw without catch" Fehler.
  
! BEISPIELE
          catch(throw("Verarbeitung abgebrochen!"));
          Das macht nichts als "Verarbeitung abgebrochen!" auszugeben.
  
diff -c efun.de.orig/time.de efun.de/time.de
*** efun.de.orig/time.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/time.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,18 ****
  SYNOPSIS
!         int time();
  
  BESCHREIBUNG
          Liefert die Anzahl Sekunden, die seit dem 01. Januar 1970,
          00:00:00 GMT verstrichen sind.
  
!         Die Zeitangabe basiert auf der Systemzeit des Hosts, der Driver
          stellt jedoch sicher, dass das Resultat von time() monoton ansteigt
          (also immer nur zu hoeheren Werten wechselt).
  
          Das Resultat von time() veraendert sich nicht waehrend dem Abarbeiten
          eines Kommandos.
  
! BEISPIEL
          Um das aktuelle Datum und die aktuelle Zeit anzuzeigen:
  
              write(ctime(time())+"\n");
--- 1,18 ----
  SYNOPSIS
!         int time()
  
  BESCHREIBUNG
          Liefert die Anzahl Sekunden, die seit dem 01. Januar 1970,
          00:00:00 GMT verstrichen sind.
  
!         Die Zeitangabe basiert auf der Systemzeit des Hosts; der Driver
          stellt jedoch sicher, dass das Resultat von time() monoton ansteigt
          (also immer nur zu hoeheren Werten wechselt).
  
          Das Resultat von time() veraendert sich nicht waehrend dem Abarbeiten
          eines Kommandos.
  
! BEISPIELE
          Um das aktuelle Datum und die aktuelle Zeit anzuzeigen:
  
              write(ctime(time())+"\n");
diff -c efun.de.orig/to_array.de efun.de/to_array.de
*** efun.de.orig/to_array.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/to_array.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         mixed *to_array(string arg);
!         mixed *to_array(symbol arg);
!         mixed *to_array(quotedarray arr);
!         mixed *to_array(mixed *arg);
  
          (int*)<value>
  
--- 1,9 ----
  SYNOPSIS
!         mixed * to_array(string arg)
!         mixed * to_array(symbol arg)
!         mixed * to_array(quotedarray arr)
!         mixed * to_array(mixed *arg)
!         mixed * to_array(struct arg)
  
          (int*)<value>
  
***************
*** 13,22 ****
  
          Gequotete Arrays werden "entquotet", und Arrays bleiben, wie sie sind.
  
! BUGS
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird
          nicht geaendert werden, da die Funktionsform verwendet werden kann.
  
  SIEHE AUCH
          to_int(E), to_string(E)
--- 14,26 ----
  
          Gequotete Arrays werden "entquotet", und Arrays bleiben, wie sie sind.
  
! FEHLER
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird
          nicht geaendert werden, da die Funktionsform verwendet werden kann.
  
+ GESCHICHTE
+         LDMud 3.3.250 fuegte den Support von structs hinzu.
+ 
  SIEHE AUCH
          to_int(E), to_string(E)
diff -c efun.de.orig/to_float.de efun.de/to_float.de
*** efun.de.orig/to_float.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/to_float.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         float to_float(int arg);
!         float to_float(string arg);
!         float to_flaot(float arg);
  
          (float)<value>
  
--- 1,7 ----
  SYNOPSIS
!         float to_float(int    arg)
!         float to_float(string arg)
!         float to_float(float  arg)
  
          (float)<value>
  
***************
*** 10,16 ****
          konvertiert bis zum ersten Zeichen, das nicht mehr zum Float
          gehoert. Floats werden direkt zurueck gegeben.
  
! BUGS
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird nicht
          geaendert werden, da die Funktionsform verwendet werden kann.
--- 10,16 ----
          konvertiert bis zum ersten Zeichen, das nicht mehr zum Float
          gehoert. Floats werden direkt zurueck gegeben.
  
! FEHLER
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird nicht
          geaendert werden, da die Funktionsform verwendet werden kann.
diff -c efun.de.orig/to_int.de efun.de/to_int.de
*** efun.de.orig/to_int.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/to_int.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         int to_int(string arg);
!         int to_int(float arg);
!         int to_int(int arg);
!         int to_int(closure arg);
  
          (int)<value>
  
--- 1,8 ----
  SYNOPSIS
!         int to_int(string  arg)
!         int to_int(float   arg)
!         int to_int(int     arg)
!         int to_int(closure arg)
  
          (int)<value>
  
***************
*** 19,31 ****
  
          Diese Funktion unterstuetzt die Basisprefixe '0x', '0o' und '0b'.
  
! BUGS
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird
          nicht geaendert werden, da die Funktionsform verwendet werden kann.
  
! AENDERUNGEN
!         Eingefuehrt in 3.2.1@2
          LDMud 3.2.11 fuehrte die Basisprefixe ein.
  
  SIEHE AUCH
--- 19,31 ----
  
          Diese Funktion unterstuetzt die Basisprefixe '0x', '0o' und '0b'.
  
! FEHLER
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird
          nicht geaendert werden, da die Funktionsform verwendet werden kann.
  
! GESCHICHTE
!         Eingefuehrt in 3.2.1@2.
          LDMud 3.2.11 fuehrte die Basisprefixe ein.
  
  SIEHE AUCH
diff -c efun.de.orig/to_object.de efun.de/to_object.de
*** efun.de.orig/to_object.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/to_object.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         object to_object(string arg);
!         object to_object(closure arg);
!         object to_object(object arg);
  
          (object)<value>
  
--- 1,7 ----
  SYNOPSIS
!         object to_object(string arg)
!         object to_object(closure arg)
!         object to_object(object arg)
  
          (object)<value>
  
***************
*** 20,26 ****
  
          Objekte und die Zahl 0 werden unveraendert zurueck gegeben.
  
! BUGS
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird nicht
          geaendert werden, da die Funktionsform verwendet werden kann.
--- 20,26 ----
  
          Objekte und die Zahl 0 werden unveraendert zurueck gegeben.
  
! FEHLER
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird nicht
          geaendert werden, da die Funktionsform verwendet werden kann.
diff -c efun.de.orig/to_string.de efun.de/to_string.de
*** efun.de.orig/to_string.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/to_string.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string to_string(mixed arg);
  
  BESCHREIBUNG
          <arg> wird in einen String umgewandelt. Das klappt mit Werten vom Typ
--- 1,5 ----
  SYNOPSIS
!         string to_string(mixed arg)
  
  BESCHREIBUNG
          <arg> wird in einen String umgewandelt. Das klappt mit Werten vom Typ
***************
*** 8,14 ****
          Closures werden in einen passenden Namen umgewandelt (vorwiegend fuer
          Debugging-Zwecke geeignet).
  
! ANMERKUNG
          Arrays werden als "explodete" Strings betrachtet, also Arrays von
          Zeichencodes. Sie werden bis zur ersten 0 oder bis zum ersten
          nicht-numerischen Eintrag "implodet", je nachdem, was zuerst eintritt.
--- 8,14 ----
          Closures werden in einen passenden Namen umgewandelt (vorwiegend fuer
          Debugging-Zwecke geeignet).
  
! ANMERKUNGEN
          Arrays werden als "explodete" Strings betrachtet, also Arrays von
          Zeichencodes. Sie werden bis zur ersten 0 oder bis zum ersten
          nicht-numerischen Eintrag "implodet", je nachdem, was zuerst eintritt.
***************
*** 16,27 ****
          Das bedeutet, dass to_string( ({ 49, 50 }) ); "12" liefert, und nicht
          "({ 49, 50 })"
  
! BUGS
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird nicht
          geaendert werden, da die Funktionsform verwendet werden kann.
  
! AENDERUNGEN
          LDMud 3.2.8 laesst Lambdaclosures als gueltige Datentypen zu.
  
  SIEHE AUCH
--- 16,27 ----
          Das bedeutet, dass to_string( ({ 49, 50 }) ); "12" liefert, und nicht
          "({ 49, 50 })"
  
! FEHLER
          Die Cast-Schreibweise funktioniert nur, wenn der genaue Wert von
          <value> zum Zeitpunkt der Kompilierung bekannt ist. Dies wird nicht
          geaendert werden, da die Funktionsform verwendet werden kann.
  
! GESCHICHTE
          LDMud 3.2.8 laesst Lambdaclosures als gueltige Datentypen zu.
  
  SIEHE AUCH
diff -c efun.de.orig/trace.de efun.de/trace.de
*** efun.de.orig/trace.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/trace.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,8 ****
  GESCHUETZT
  SYNOPSIS
!         #include <sys/trace.h>
  
!         int trace(int traceflags);
  
  BESCHREIBUNG
          Setzt die Trace Flags und liefert die alten Trace Flags zurueck.
--- 1,8 ----
  GESCHUETZT
  SYNOPSIS
!         #include <trace.h>
  
!         int trace(int traceflags)
  
  BESCHREIBUNG
          Setzt die Trace Flags und liefert die alten Trace Flags zurueck.
***************
*** 35,54 ****
          Die Master-Lfun valid_trace() wird mit ("trace", traceflags)
          aufgerufen, um die Erlaubnis fuer die Nutzung von trace() zu erhalten.
  
! BEISPIEL
          object obj;
          string prefix;
!         obj=find_player("thomas");
!         prefix=objec_name(obj);
!         prefix=prefix[1..strlen(prefix)-1];  /* entfernt den Praefix "/" */
          traceprefix(prefix);
          /* Von hier an wird nur Code im Objekt std/player#69 getracet */
          trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS);
          ...
          trace(TRACE_NOTHING);
  
! AENDERUNGEN
!         LDMud 3.2.9 uebergibt auch <traceflags> an valid_trace()
  
  SIEHE AUCH
          traceprefix(E)
--- 35,54 ----
          Die Master-Lfun valid_trace() wird mit ("trace", traceflags)
          aufgerufen, um die Erlaubnis fuer die Nutzung von trace() zu erhalten.
  
! BEISPIELE
          object obj;
          string prefix;
!         obj = find_player("thomas");
!         prefix = object_name(obj);  /* z.B. /std/player#69         */
!         prefix = prefix[1..];       /* entfernt den fuehrenden "/" */
          traceprefix(prefix);
          /* Von hier an wird nur Code im Objekt std/player#69 getracet */
          trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS);
          ...
          trace(TRACE_NOTHING);
  
! GESCHICHTE
!         LDMud 3.2.9 uebergibt auch <traceflags> an valid_trace().
  
  SIEHE AUCH
          traceprefix(E)
diff -c efun.de.orig/traceprefix.de efun.de/traceprefix.de
*** efun.de.orig/traceprefix.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/traceprefix.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,7 ****
  GESCHUETZT
  SYNOPSIS
!         string traceprefix(string prefix);
!         string traceprefix(int dummy);
  
  BESCHREIBUNG
          Wenn die Funktion mit einem String als Argument aufgerufen wird,
--- 1,7 ----
  GESCHUETZT
  SYNOPSIS
!         string traceprefix(string prefix)
!         string traceprefix(int dummy)
  
  BESCHREIBUNG
          Wenn die Funktion mit einem String als Argument aufgerufen wird,
***************
*** 19,37 ****
          aufgerufen, um die Erlaubnis fuer die Benutzung dieser Funktion zu
          erhalten.
  
! BEISPIEL
          object obj;
          string prefix;
          obj=find_player("thomas");
!         prefix=objec_name(obj);
!         prefix=prefix[1..strlen(prefix)-1];  /* entfernt den Praefix "/" */
          traceprefix(prefix);
          /* Von hier an wird nur Code im Objekt std/player#69 getracet */
          trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS);
          ...
          trace(TRACE_NOTHING);
  
! AENDERUNGEN
          Ab LDMud 3.2.9 wird das Argument <prefix> an valid_trace() uebergeben.
  
  SIEHE AUCH
--- 19,37 ----
          aufgerufen, um die Erlaubnis fuer die Benutzung dieser Funktion zu
          erhalten.
  
! BEISPIELE
          object obj;
          string prefix;
          obj=find_player("thomas");
!         prefix = object_name(obj);  /* z.B. /std/player#69         */
!         prefix = prefix[1..];       /* entfernt den fuehrenden "/" */
          traceprefix(prefix);
          /* Von hier an wird nur Code im Objekt std/player#69 getracet */
          trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS);
          ...
          trace(TRACE_NOTHING);
  
! GESCHICHTE
          Ab LDMud 3.2.9 wird das Argument <prefix> an valid_trace() uebergeben.
  
  SIEHE AUCH
diff -c efun.de.orig/transfer.de efun.de/transfer.de
*** efun.de.orig/transfer.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/transfer.de	2009-11-02 23:21:46.000000000 +0000
***************
*** 18,24 ****
          6: <item> kann nicht aufgenommen werden.
  
          Die Funktion ruft die lfuns add_weight(), drop(), get(),
!         prevent_insert(), add_weight(), und can_put_and_get() nach Bedarf..
  
  SIEHE AUCH
           move_object(E), drop(A), get(A), prevent_insert(A),
--- 18,24 ----
          6: <item> kann nicht aufgenommen werden.
  
          Die Funktion ruft die lfuns add_weight(), drop(), get(),
!         prevent_insert(), add_weight(), und can_put_and_get() nach Bedarf auf.
  
  SIEHE AUCH
           move_object(E), drop(A), get(A), prevent_insert(A),
diff -c efun.de.orig/transpose_array.de efun.de/transpose_array.de
*** efun.de.orig/transpose_array.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/transpose_array.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         *mixed transpose_array(mixed *arr);
  
  BESCHREIBUNG
          Transponiert das Array <arr>.
--- 1,5 ----
  SYNOPSIS
!         mixed * transpose_array(mixed *arr)
  
  BESCHREIBUNG
          Transponiert das Array <arr>.
***************
*** 11,17 ****
          Array von ({ key, data }) in Paaren. Das ist praktisch, wenn
          sort_array() oder filter() auf die Alist angewendet werden soll.
  
! BEISPIEL
          sort_array(transpose_array( ({m_indices(map), m_values(map) }) ),
                     lambda( ({'a, 'b}),
                             ({#'<, ({ #'[, 'a, 0}),
--- 11,17 ----
          Array von ({ key, data }) in Paaren. Das ist praktisch, wenn
          sort_array() oder filter() auf die Alist angewendet werden soll.
  
! BEISPIELE
          sort_array(transpose_array( ({m_indices(map), m_values(map) }) ),
                     lambda( ({'a, 'b}),
                             ({#'<, ({ #'[, 'a, 0}),
diff -c efun.de.orig/trim.de efun.de/trim.de
*** efun.de.orig/trim.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/trim.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         #include <sys/strings.h>
  
!         string trim(string str);
!         string trim(string str, int where);
!         string trim(string str, int where, string char);
  
  BESCHREIBUNG
          Entfernt alle vorausgehenden und abschliessenden Zeichen <char> in
--- 1,9 ----
  SYNOPSIS
!         #include <strings.h>
  
!         string trim(string str)
!         string trim(string str, int where)
!         string trim(string str, int where, string char)
  
  BESCHREIBUNG
          Entfernt alle vorausgehenden und abschliessenden Zeichen <char> in
***************
*** 21,33 ****
              TRIM_BOTH   (3 oder 0): entfernt sowohl vorausgehende als auch
                                      abschliessende Zeichen <char>
  
! BEISPIEL
          trim("    1234    ");                       ergibt: "1234"
          trim("    1234    ", TRIM_RIGHT);           ergibt: "    1234"
          trim("    1234    ", TRIM_BOTH, " 1");      ergibt: "234"
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.7
  
  SIEHE AUCH
          regreplace(E)
--- 21,33 ----
              TRIM_BOTH   (3 oder 0): entfernt sowohl vorausgehende als auch
                                      abschliessende Zeichen <char>
  
! BEISPIELE
          trim("    1234    ");                       ergibt: "1234"
          trim("    1234    ", TRIM_RIGHT);           ergibt: "    1234"
          trim("    1234    ", TRIM_BOTH, " 1");      ergibt: "234"
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.7.
  
  SIEHE AUCH
          regreplace(E)
diff -c efun.de.orig/typeof.de efun.de/typeof.de
*** efun.de.orig/typeof.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/typeof.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
!         int typeof(mixed arg);
  
  BESCHREIBUNG
          Gibt einen Code fuer den Typ des Arguments <arg>. Die Typen sind
!         definiert in <sys/lpctypes.h>
  
! AENDERUNGEN
!         Eingefuehrt in 3.2@63
  
  SIEHE AUCH
          get_type_info(E), intp(E), objectp(E), floatp(E), pointerp(E),
--- 1,14 ----
  SYNOPSIS
!         #include <lpctypes.h>
! 
!         int typeof(mixed arg)
  
  BESCHREIBUNG
          Gibt einen Code fuer den Typ des Arguments <arg>. Die Typen sind
!         definiert in <lpctypes.h>.
  
! GESCHICHTE
!         Eingefuehrt in 3.2@63.
  
  SIEHE AUCH
          get_type_info(E), intp(E), objectp(E), floatp(E), pointerp(E),
diff -c efun.de.orig/unbound_lambda.de efun.de/unbound_lambda.de
*** efun.de.orig/unbound_lambda.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/unbound_lambda.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         closure unbound_lambda(mixed *arg, mixed code);
  
  BESCHREIBUNG
          Erzeugt eine Lambda-Closure, die nicht an ein Objekt gebunden ist,
--- 1,5 ----
  SYNOPSIS
!         closure unbound_lambda(mixed *arg, mixed code)
  
  BESCHREIBUNG
          Erzeugt eine Lambda-Closure, die nicht an ein Objekt gebunden ist,
***************
*** 23,30 ****
          funcall() oder apply() ausgewertet wird. Das zweite Argument <code>
          enthaelt den Code der Closure.
  
! AENDERUNGEN
!         Eingefuehrt in 3.2@82
  
  SIEHE AUCH
          closures(LPC), lambda(E), apply(E), funcall(E), bind_lambda(E)
--- 23,30 ----
          funcall() oder apply() ausgewertet wird. Das zweite Argument <code>
          enthaelt den Code der Closure.
  
! GESCHICHTE
!         Eingefuehrt in 3.2@82.
  
  SIEHE AUCH
          closures(LPC), lambda(E), apply(E), funcall(E), bind_lambda(E)
diff -c efun.de.orig/unique_array.de efun.de/unique_array.de
*** efun.de.orig/unique_array.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/unique_array.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 18,29 ****
                 ({same2:1, same2:2, ... same2:n}),
                 ({samem:1, samem:2, ... samem:n}) })
  
! BEISPIEL
          Um ein Array von Arrays zu erhalten, das alle Benutzer, nach Level
          gruppiert, enthaelt:
  
              mixed *arr;
!             arr=unique_array(users(), "_query_level", -1);
  
          Goetter haben einen Level von -1. Sie werden nicht in arr aufgenommen,
          weil <skip> == -1.
--- 18,29 ----
                 ({same2:1, same2:2, ... same2:n}),
                 ({samem:1, samem:2, ... samem:n}) })
  
! BEISPIELE
          Um ein Array von Arrays zu erhalten, das alle Benutzer, nach Level
          gruppiert, enthaelt:
  
              mixed *arr;
!             arr = unique_array(users(), "_query_level", -1);
  
          Goetter haben einen Level von -1. Sie werden nicht in arr aufgenommen,
          weil <skip> == -1.
diff -c efun.de.orig/unmkmapping.de efun.de/unmkmapping.de
*** efun.de.orig/unmkmapping.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/unmkmapping.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         *mixed unmkmapping(mapping map);
  
  BESCHREIBUNG
          Wandelt das Mapping <map> in ein Array von Arrays aus, das alle Keys
--- 1,5 ----
  SYNOPSIS
!         mixed * unmkmapping(mapping map)
  
  BESCHREIBUNG
          Wandelt das Mapping <map> in ein Array von Arrays aus, das alle Keys
***************
*** 15,25 ****
  
              apply(#'mkmapping, unmkmapping(m)) == m
  
! BEISPIEL
          mapping m = ([ 1:10;20, 2:11;21 ]);
          unmkmapping(m) ergibt: ({ ({1, 2}) , ({10, 11}) , ({20, 21}) })
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.6.
  
  SIEHE AUCH
--- 15,25 ----
  
              apply(#'mkmapping, unmkmapping(m)) == m
  
! BEISPIELE
          mapping m = ([ 1:10;20, 2:11;21 ]);
          unmkmapping(m) ergibt: ({ ({1, 2}) , ({10, 11}) , ({20, 21}) })
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.6.
  
  SIEHE AUCH
diff -c efun.de.orig/unquote.de efun.de/unquote.de
*** efun.de.orig/unquote.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/unquote.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,16 ****
  SYNOPSIS
!         quoted_array unquote(quoted_array arr);
!         string|symbol unquote(symbol sym);
  
  BESCHREIBUNG
          Entfernt ein Quote von einem gequoteten Array oder Symbol. Wenn das
          letzte Quote von einem Symbol entfernt wird, entsteht ein String.
  
! BEISPIELE:
          unquote('foo);              ergibt: "foo"
          unquote( '({1,2,3}) );      ergibt: ({1,2,3})
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
--- 1,16 ----
  SYNOPSIS
!         quoted_array unquote(quoted_array arr)
!         string|symbol unquote(symbol sym)
  
  BESCHREIBUNG
          Entfernt ein Quote von einem gequoteten Array oder Symbol. Wenn das
          letzte Quote von einem Symbol entfernt wird, entsteht ein String.
  
! BEISPIELE
          unquote('foo);              ergibt: "foo"
          unquote( '({1,2,3}) );      ergibt: ({1,2,3})
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
diff -c efun.de.orig/unshadow.de efun.de/unshadow.de
*** efun.de.orig/unshadow.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/unshadow.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         void unshadow();
  
  BESCHREIBUNG
          Das aufrufende Objekt wird als Shadow von allen anderen Objekten
          entfernt, denen es uebergeworfen war. Wenn dem aufrufenden Objekt
          selbst ein Shadow uebergeworfen war, wird dieser entfernt.
  
- 
  SIEHE AUCH
          shadow(E), query_shadowing(E)
--- 1,10 ----
  SYNOPSIS
!         void unshadow()
  
  BESCHREIBUNG
          Das aufrufende Objekt wird als Shadow von allen anderen Objekten
          entfernt, denen es uebergeworfen war. Wenn dem aufrufenden Objekt
          selbst ein Shadow uebergeworfen war, wird dieser entfernt.
  
  SIEHE AUCH
          shadow(E), query_shadowing(E)
diff -c efun.de.orig/upper_case.de efun.de/upper_case.de
*** efun.de.orig/upper_case.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/upper_case.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         string upper_case(string str);
  
  BESCHREIBUNG
          Wandelt alle Zeichen in <str> in Grossbuchstaben um und gibt das
          Resultat zurueck.
  
! BEISPIEL
          upper_case("Heya!")     ergibt: "HEYA!"
  
  SIEHE AUCH
--- 1,11 ----
  SYNOPSIS
!         string upper_case(string str)
  
  BESCHREIBUNG
          Wandelt alle Zeichen in <str> in Grossbuchstaben um und gibt das
          Resultat zurueck.
  
! BEISPIELE
          upper_case("Heya!")     ergibt: "HEYA!"
  
  SIEHE AUCH
diff -c efun.de.orig/users.de efun.de/users.de
*** efun.de.orig/users.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/users.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         *object users();
  
  BESCHREIBUNG
          Liefert ein Array, das alle interaktiven Benutzer enthaelt.
--- 1,5 ----
  SYNOPSIS
!         object * object users()
  
  BESCHREIBUNG
          Liefert ein Array, das alle interaktiven Benutzer enthaelt.
diff -c efun.de.orig/utime.de efun.de/utime.de
*** efun.de.orig/utime.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/utime.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,21 ****
  SYNOPSIS
!         *int utime()
  
  BESCHREIBUNG
          Liefert ein Array der Zeit, die seit dem 01. Januar 1970,
!         00:00:00 GMT vergangen ist, mit Genauigkeit in Mikrosekunden
          (0.000001 Sekunden).
  
          Zurueck gegeben wird ein Array der Form:
              int[0]: Anzahl Sekunden seit Beginn der Zeitrechnung
              int[1]: Anzahl Mikrosekunden innerhalb der aktuellen Sekunde
  
! BEISPIEL
          write(ctime(utime())+"\n");
  
          Gibt das aktuelle Datum und Zeit zurueck.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
--- 1,21 ----
  SYNOPSIS
!         int * utime()
  
  BESCHREIBUNG
          Liefert ein Array der Zeit, die seit dem 01. Januar 1970,
!         00:00:00 GMT vergangen ist, mit einer Genauigkeit in Mikrosekunden
          (0.000001 Sekunden).
  
          Zurueck gegeben wird ein Array der Form:
              int[0]: Anzahl Sekunden seit Beginn der Zeitrechnung
              int[1]: Anzahl Mikrosekunden innerhalb der aktuellen Sekunde
  
! BEISPIELE
          write(ctime(utime())+"\n");
  
          Gibt das aktuelle Datum und Zeit zurueck.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.9.
  
  SIEHE AUCH
diff -c efun.de.orig/variable_exists.de efun.de/variable_exists.de
*** efun.de.orig/variable_exists.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/variable_exists.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
          #include <functionlist.h>
  
!         string variable_exists(string str [, int flags]);
!         string variable_exists(string str, object obj [, int flags]);
  
  BESCHREIBUNG
          Sucht eine Varialbe <str> in this_object() oder (falls angegeben)
--- 1,8 ----
  SYNOPSIS
          #include <functionlist.h>
  
!         string variable_exists(string str [, int flags])
!         string variable_exists(string str, object obj [, int flags])
  
  BESCHREIBUNG
          Sucht eine Varialbe <str> in this_object() oder (falls angegeben)
***************
*** 22,28 ****
          sie fuer das aufrufende Objekt nicht sichtbar sind), wird 0 zurueck
          geliefert.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
--- 22,28 ----
          sie fuer das aufrufende Objekt nicht sichtbar sind), wird 0 zurueck
          geliefert.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
diff -c efun.de.orig/variable_list.de efun.de/variable_list.de
*** efun.de.orig/variable_list.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/variable_list.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,9 ****
  GESCHUETZT
  SYNOPSIS
!         #include <sys/functionlist.h>
!         #include <sys/lpctypes.h>
  
!         *mixed variable_list(object obj, int flags = RETURN_FUNCTION_NAME);
  
  BESCHREIBUNG
          Liefert ein Array mit Informationen ueber die Variablen von <obj>.
--- 1,9 ----
  GESCHUETZT
  SYNOPSIS
!         #include <functionlist.h>
!         #include <lpctypes.h>
  
!         mixed *variable_list(object obj, int flags = RETURN_FUNCTION_NAME)
  
  BESCHREIBUNG
          Liefert ein Array mit Informationen ueber die Variablen von <obj>.
***************
*** 12,18 ****
          im Array abgespeichert:
            - der Name der Variablen
            - die Flags der Variablen (siehe weiter unten)
!           - der Rueckgabetyp (gemaess mudlib/sys/lpctypes.h)
            - der Wert der Variablen
  
          <obj> kann als Objekt oder als Dateinamen uebergeben werden. Im
--- 12,18 ----
          im Array abgespeichert:
            - der Name der Variablen
            - die Flags der Variablen (siehe weiter unten)
!           - der Rueckgabetyp (gemaess <lpctypes.h>)
            - der Wert der Variablen
  
          <obj> kann als Objekt oder als Dateinamen uebergeben werden. Im
***************
*** 24,30 ****
          <obj>).
  
          Mit <flags> wird festgelegt, welche Informationen ueber welche
!         Variablen abgefragt werden. Folgende Flags aus <sys/functionlist.h>
          koennen mit binaerem Oder kombiniert werden:
  
          Auswahl der gesammelten Information:
--- 24,30 ----
          <obj>).
  
          Mit <flags> wird festgelegt, welche Informationen ueber welche
!         Variablen abgefragt werden. Folgende Flags aus <functionlist.h>
          koennen mit binaerem Oder kombiniert werden:
  
          Auswahl der gesammelten Information:
***************
*** 48,60 ****
              TYPE_MOD_NO_MASGK     die Variable ist "nomask" deklariert
              TYPE_MOD_PUBLIC       die Variable ist "public" deklariert
  
!         All diese Flags sind in mudlib/sys/functionlist.h definiert und
!         sollten an einen allgemein zugaenglichen Platz kopiert werden.
!         Die Rueckgabewerte sind in mudlib/sys/lpctypes.h definiert, die
!         auch in die Mudlib kopiert werden sollten.
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.10
  
  SIEHE AUCH
          inherit_list(E), functionlist(E), variable_exists(E)
--- 48,58 ----
              TYPE_MOD_NO_MASGK     die Variable ist "nomask" deklariert
              TYPE_MOD_PUBLIC       die Variable ist "public" deklariert
  
!         All diese Flags sind in <functionlist.h>, die Rueckgabewerte in
!         <lpctypes.h> definiert.
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.10.
  
  SIEHE AUCH
          inherit_list(E), functionlist(E), variable_exists(E)
diff -c efun.de.orig/walk_mapping.de efun.de/walk_mapping.de
*** efun.de.orig/walk_mapping.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/walk_mapping.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         void walk_mapping(mapping map, string fun, mixed extra, ...);
          void walk_mapping(mapping map, string fun, string|object obj,
!             mixed extra, ...);
!         void walk_mapping(mapping map, closures cl, mixed extra, ...);
  
  BESCHREIBUNG
          Ruft obj->fun(key, value1, ... valuen, extra, ...) fuer jeden Key
--- 1,8 ----
  SYNOPSIS
!         void walk_mapping(mapping map, string fun, mixed extra, ...)
          void walk_mapping(mapping map, string fun, string|object obj,
!                                                       mixed extra, ...)
!         void walk_mapping(mapping map, closures cl, mixed extra, ...)
  
  BESCHREIBUNG
          Ruft obj->fun(key, value1, ... valuen, extra, ...) fuer jeden Key
***************
*** 18,24 ****
          Wird <obj> weggelassen oder enthaelt es weder einen String noch ein
          Objekt, wird standardmaessig this_object() verwendet.
  
! AENDERUNGEN
          Eingefuehrt in LDMud 3.2@61.
  
  SIEHE AUCH
--- 18,24 ----
          Wird <obj> weggelassen oder enthaelt es weder einen String noch ein
          Objekt, wird standardmaessig this_object() verwendet.
  
! GESCHICHTE
          Eingefuehrt in LDMud 3.2@61.
  
  SIEHE AUCH
diff -c efun.de.orig/widthof.de efun.de/widthof.de
*** efun.de.orig/widthof.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/widthof.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,16 ****
  SYNOPSIS
!         int widthof(mapping map);
  
  BESCHREIBUNG
          Liefert die Anzahl Values pro Key im Mapping <map>. Wenn <map> 0 ist,
          ist das Resultat 0.
  
! BEISPIEL
          mapping map = (["foo" : 1,2]);
          widthof(map)    ergibt 2.
  
! AENDERUNGEN
!         Eingefuehrt in LDMud 3.2.6
  
  SIEHE AUCH
          sizeof(E), mkmapping(E), m_reallocate(E), m_values(E), unmkmapping(E)
--- 1,16 ----
  SYNOPSIS
!         int widthof(mapping map)
  
  BESCHREIBUNG
          Liefert die Anzahl Values pro Key im Mapping <map>. Wenn <map> 0 ist,
          ist das Resultat 0.
  
! BEISPIELE
          mapping map = (["foo" : 1,2]);
          widthof(map)    ergibt 2.
  
! GESCHICHTE
!         Eingefuehrt in LDMud 3.2.6.
  
  SIEHE AUCH
          sizeof(E), mkmapping(E), m_reallocate(E), m_values(E), unmkmapping(E)
diff -c efun.de.orig/wizlist_info.de efun.de/wizlist_info.de
*** efun.de.orig/wizlist_info.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/wizlist_info.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,8 ****
  GESCHUETZT
  SYNOPSIS
!         #include <sys/wizlist.h>
  
!         *mixed wizlist_info();
  
  BESCHREIBUNG
          Liefert ein Array mit Eintraegen aus der Wizlist (der internen
--- 1,8 ----
  GESCHUETZT
  SYNOPSIS
!         #include <wizlist.h>
  
!         mixed * wizlist_info()
  
  BESCHREIBUNG
          Liefert ein Array mit Eintraegen aus der Wizlist (der internen
***************
*** 13,19 ****
          Jeder Eintrag enthaelt wiederum ein Array mit folgenden Elementen:
  
              string  w[WL_NAME]          Name des Gottes
!             int w[WL_COMMANDS]          Gewichtete Anzahl Kommandi, die von
                                          Objekten dieses Gottes ausgefuehrt
                                          wurden
              int w[WL_COSTE]             Gewichtete Summe der Eval-Kosten
--- 13,19 ----
          Jeder Eintrag enthaelt wiederum ein Array mit folgenden Elementen:
  
              string  w[WL_NAME]          Name des Gottes
!             int w[WL_COMMANDS]          Gewichtete Anzahl Kommandos, die von
                                          Objekten dieses Gottes ausgefuehrt
                                          wurden
              int w[WL_COSTE]             Gewichtete Summe der Eval-Kosten
***************
*** 29,37 ****
  
          Die "gewichteten" Werte verfallen pro Stunde um 10%.
  
! AENDERUNGEN
          LDMud 3.2.10 trennte das alte WL_EVAL_COST in WL_COST und WL_GIGACOST,
!             um laengern Uptimes gerecht zu werden. Ausserdem wurde
              WL_TOTAL_COST und WL_TOTAL_GIGACOST eingefuehrt.
  
  SIEHE AUCH
--- 29,37 ----
  
          Die "gewichteten" Werte verfallen pro Stunde um 10%.
  
! GESCHICHTE
          LDMud 3.2.10 trennte das alte WL_EVAL_COST in WL_COST und WL_GIGACOST,
!             um laengeren Uptimes gerecht zu werden. Ausserdem wurde
              WL_TOTAL_COST und WL_TOTAL_GIGACOST eingefuehrt.
  
  SIEHE AUCH
diff -c efun.de.orig/write_bytes.de efun.de/write_bytes.de
*** efun.de.orig/write_bytes.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/write_bytes.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int write_bytes(string file, int start, string str);
  
  BESCHREIBUNG
          Schreibt den String <str> ins File <file> und ueberschreibt dabei die
--- 1,5 ----
  SYNOPSIS
!         int write_bytes(string file, int start, string str)
  
  BESCHREIBUNG
          Schreibt den String <str> ins File <file> und ueberschreibt dabei die
***************
*** 7,14 ****
          werden die Zeichen vom Ende von <file> an gezaehlt. write_bytes()
          liefert 1 bei Erfolg, 0 bei Misserfolg.
  
! ANMERKUNG
!         Seit Version 3.2@232 ist write_bytes() in der Lage, ueberlange Zeichen
          aus <str> ans File <file> anzuhaengen.
  
  SIEHE AUCH
--- 7,14 ----
          werden die Zeichen vom Ende von <file> an gezaehlt. write_bytes()
          liefert 1 bei Erfolg, 0 bei Misserfolg.
  
! ANMERKUNGEN
!         Seit Version 3.2@232 ist write_bytes() in der Lage, Zeichen
          aus <str> ans File <file> anzuhaengen.
  
  SIEHE AUCH
diff -c efun.de.orig/write.de efun.de/write.de
*** efun.de.orig/write.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/write.de	2009-11-02 22:26:10.000000000 +0000
***************
*** 1,6 ****
  VERALTET
  SYNOPSIS
!         void write(mixed msg);
  
  BESCHREIBUNG
          Gibt etwas an den aktuellen Benutzer aus. Was genau ausgegeben wird,
--- 1,6 ----
  VERALTET
  SYNOPSIS
!         void write(mixed msg)
  
  BESCHREIBUNG
          Gibt etwas an den aktuellen Benutzer aus. Was genau ausgegeben wird,
diff -c efun.de.orig/write_file.de efun.de/write_file.de
*** efun.de.orig/write_file.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/write_file.de	2009-11-02 23:22:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int write_file(string file, string str);
  
  BESCHREIBUNG
          Haengt den String <str> an die Datei <file> an. Liefert 1 bei Erfolg,
--- 1,5 ----
  SYNOPSIS
!         int write_file(string file, string str)
  
  BESCHREIBUNG
          Haengt den String <str> an die Datei <file> an. Liefert 1 bei Erfolg,
diff -c efun.de.orig/xor_bits.de efun.de/xor_bits.de
*** efun.de.orig/xor_bits.de	2009-11-02 22:22:32.000000000 +0000
--- efun.de/xor_bits.de	2009-11-02 22:26:11.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string xor_bits(string str1, string str2);
  
  BESCHREIBUNG
          <str1> und <str2> sind beiden Bitstrings. Das Resultat von xor_bits()
--- 1,5 ----
  SYNOPSIS
!         string xor_bits(string str1, string str2)
  
  BESCHREIBUNG
          <str1> und <str2> sind beiden Bitstrings. Das Resultat von xor_bits()
