diff --git a/doc/efun/sscanf b/doc/efun/sscanf
index a616bf2..a927b70 100644
--- a/doc/efun/sscanf
+++ b/doc/efun/sscanf
@@ -1,115 +1,78 @@
-FUNKTION:
- int sscanf(string str,string fmt,mixed var1,mixed var2,...)
+SYNOPSIS
+        int sscanf(string str, string fmt, mixed var1, mixed var2, ...)
 
-ARGUMENTE:
-      str
-        - String, der nach einem Muster zu durchsuchen ist
-        - darf nicht NULL sein
-      fmt
-        - Format-String, nach dessen Muster untersucht wird
-      var1,var2,...
-        - Argumente die mit %d oder %s korrespondieren
+BESCHREIBUNG
+        Wertet einen String <str> unter Beruecksichtigung des Formats
+        <fmt>. <fmt> kann Strings beinhalten, die durch %d und %s getrennt
+        werden. Jedes %d und %s entspricht einer der Variablen <var1>,
+        <var2> etc.
 
-RUeCKGABEWERT:
-     Anzahl der gefundenen Argumente.
+        Die Operatoren im Format-String <fmt> haben eines der folgenden
+        Formate:
 
-BESCHREIBUNG:
-     Wertet einen String <str> unter Beruecksichtigung des Formats <fmt>
-     aus. <fmt> kann Strings beinhalten, die durch %d und %s getrennt
-     werden. Jedes %d und %s entspricht einer der Variablen <var1>, <var2>,
-     etc. in die gespeichert werden soll.
-
-     Die Operatoren im Format-String <fmt> haben eines der folgenden
-     Formate:
-
-         %[+][!|~][<size>[.<minmatch>]]<type>
+            %[+][!|~][<size>[.<minmatch>]]<type>
 
         <type> kann folgendes sein:
-            d: steht fuer eine Zahl
-            D: steht fuer eine Zahl
+            d: meldet eine Zahl
+            D: meldet eine Zahl
             U:
-            s: steht fuer eine Zeichenkette
-            %: steht fuer das %-Zeichen
-            t: steht fuer Whitespaces (also Leerschlaege und Tabulatoren),
+            s: meldet eine Zeichenkette
+            %: meldet das %-Zeichen
+            t: meldet Whitespaces (also Leerschlaege und Tabulatoren),
                speichert diese aber nicht.
 
-     <size> ist die erwartete Feldgroesse, <minmatch> die verlangte
-     minimale Laenge fuer einen Treffer (Standardwerte sind 0 fuer
-     Strings und 1 fuer Nummern). Sowohl <size> als auch <minmatch> kann
-     entweder numerisch oder mit '*' angegeben werden - im zweiten Fall
-     wird die gueltige Variable in der Liste der Argumente benutzt.
+        <size> ist die erwartete Feldgroesse, <minmatch> die verlangte
+        minimale Laenge fuer einen Treffer (Standardwerte sind 0 fuer
+        Strings und 1 fuer Nummern). Sowohl <size> als auch <minmatch> kann
+        entweder numerisch oder mit '*' angegeben werden - im zweiten Fall
+        wird die gueltige Variable in der Liste der Argumente benutzt.
 
-     Wird + angegeben, muessen die Zeichen nach dem Feld ebenfalls
-     matchen. Ist dies nicht der Fall, wird auch dieses Feld als
-     Misserfolg in der Rueckgabe betrachtet (auch wenn der Wert
-     bereits an die zugehoerige Variable zugewiesen wurde).
+        Wird + angegeben, muessen die Zeichen nach dem Feld ebenfalls
+        matchen. Ist dies nicht der Fall, wird das Feld als Misserfolg
+        betrachted (auch wenn der Wert bereits an die zugehoerige Variable
+        zugewiesen wurde).
 
-     Wird ! angegeben, wird zwar die Suche durchgefuehrt, aber Treffer
-     werden weder gespeichert noch gezaehlt. Mit ~ als Argument wird
-     zwar die Suche durchgefuehrt und die Treffer gezaehlt, das Resultat
-     wird aber nicht gespeichert.
+        Wird ! angegeben, wird zwar die Suche durchgefuehrt, aber Treffer
+        werden weder gespeichert noch gezaehlt. Mit ~ als Argument wird
+        zwar die Suche durchgefuehrt und die Treffer gezaehlt, das Resultat
+        wird aber nicht gespeichert.
 
-     Wenn ein %s nicht am Ende von <fmt> steht, wird nur ein Treffer
-     registriert, wenn auch der nachfolgende String bzw. das
-     nachfolgende Format gefunden wird. Weiter unten gibt es dazu
-     ein Beispiel.
-     Bei einem %d allerdings muss dieses Verhalten mit einem '+'
-     erzwungen werden.
+        Wenn %s nicht am Ende von <fmt> steht, wird nur ein Treffer
+        registriert, wenn auch der nachfolgende String bzw. das
+        nachfolgende Format gefunden wird. Weiter unten gibt es dazu
+        ein Beispiel.
 
-     Der Unterschied zwischen %d und %D %U ist, dass letzteres ein
-     unmittelbar vorausgehendes %s so bald als moeglich abbricht,
-     waehrend ersteres zuerst versucht, einen moeglichst grossen Treffer
-     fuer %s zu erzielen. Trotzdem ueberspringt %D/%U keine Whitespaces,
-     dazu muss %.0t%D gesetzt werden.
+        Der Unterschied zwischen %d und %D %U ist, dass letzteres ein
+        unmittelbar vorausgehendes %s so bald als moeglich abbricht,
+        waehrend ersteres zuerst versucht, einen moeglichst grossen Treffer
+        fuer %s zu erzielen. Trotzdem ueberspringt %D/%U keine Whitespaces,
+        dazu muss %.0t%D gesetzt werden.
 
-     Die Funktion sscanf() ist insofern ein Spezialfall, als dass
-     Argumente automatisch nach Referenz uebergeben werden.
+        Zurueck gegeben wird die Anzahl Treffer.
 
-BEISPIELE:
-     string who, what;
-         if (sscanf("wirf frisbee zu rex",
-                    "wirf %s zu %s", what, who) != 2)
-             write("Usage: Wirf <what> zu <who>\n");
-         else
-             write("Du wirfst einen "+what+" zu "+who+".\n");
+        Die Funktion sscanf() ist insofern ein Spezialfall, als dass
+        Argumente automatisch nach Referenz uebergeben werden.
 
-     sscanf("ab", "%s%s", who, what)
-     ==> liefert 2, who = "", what = "ab"
+BEISPIELE
+        string who, what;
+            if (sscanf("wirf frisbee zu rex",
+                "wirf %s zu %s", what, who) != 2)
+                write("Usage: Wirf <what> zu <who>\n");
+            else
+                write("Du wirfst einen "+what+" zu "+who+" um auf dich "
+                    "aufmerksam zu machen.\n");
 
-     sscanf("ab", "%s %s", who, what)
-     ==> liefert 0, who = 0, what = 0
+        sscanf("ab", "%s%s", who, what)
+            ==> liefert 2, who = "", what = "ab"
 
-     sscanf("ab ", "%s %s", who, what)
-     ==> liefert 2, who = "ab", what = ""
+        sscanf("ab", "%s %s", who, what)
+            ==> liefert 0, who = 0, what = 0
 
+        sscanf("ab ", "%s %s", who, what)
+            ==> liefert 2, who = "ab", what = ""
 
-     // Achtung bei %d
-     sscanf("12 ","%d xyz", num1);
-     ==> liefert 1, num1 = 12
+GESCHICHTE
+        LDMud 3.3.713/3.2.13 fuehrte den '+'-Modifizierer ein.
 
-     sscanf("12 ","%s xyz", num1);
-     ==> liefert 0, num1 = 0
-
-     // mit '+' wird das Parsen des Restformats erzwungen:
-     sscanf("12 ","%+d xyz", num1);
-     ==> liefert 0, num1 = 12
-
-
-     // Weiteres Beispiel zu %d:
-     sscanf("get 12 coins","get %d rubys",num)
-     ==> ergibt 1, weil 'rubys' ignoriert wird
-
-     // Beispiel Format-Ignore 2
-     sscanf("get 12 coins","get %+d rubys",num);
-     ==> ergibt 0, da mit dem '+' das Parsen des Restformats erzwungen wird
-     ==> ergibt 1 bei 'get 12 rubys'
-
-     // Beispiel Format-Ignore 3 [alte Variante]
-     sscanf("get 12 coins","get %d rubys%s", num, dummy)
-     ==> ergibt 1
-     ==> ergibt 2 bei "get 12 rubys"
-
-SIEHE AUCH:
+SIEHE AUCH
         explode(E), regexp(E)
-
-8.Aug 2007 Gloinson
