View Issue Details

IDProjectCategoryView StatusLast Update
0000692LDMud 3.3Documentationpublic2011-02-23 23:22
ReporterCoogan Assigned Tozesstra  
PrioritynormalSeveritytextReproducibilityhave not tried
Status resolvedResolutionfixed 
Product Version3.3.719 
Target Version3.3.720Fixed in Version3.3.720 
Summary0000692: improve some efun manpages
Descriptionwhen looking over some efun manpages, the following mistakes caught my eye, which are packed into a diff ready to apply against /doc/efun in trunk (and most probably also to trunk of 3.5)

* some typos in text
* exchanged german words (e.g. BESCHREIBUNG) by english ones (DESCRIPTION)
* correction of include statements: some manpages say e.g. "include <functionlist.h>", some "include <sys/functionlist.h>" -- corrected to <functionlist.h>
* section type EXAMPLE (whereas EXAMPLES is written in the majority of docs) have been corrected to EXAMPLES
* fixed the width and section indentation for some manpages
* minor changes
TagsNo tags attached.

Activities

zesstra

2009-10-17 06:41

administrator   ~0001526

Thanks, I will take care of this soon.
I think, <sys/...> is deliberate, but I actually like <...> more, because mudlibs can put their header wherever they like and usually they use the include dir hook to enable access by <...> to them. So you have to delete the sys/ part when you copy the include statement from the manpage (and I sometimes forgot that).

zesstra

2009-10-17 06:42

administrator   ~0001527

Ah, one question: I assume you used at least partly grep/sed, could you just repeat that part for the german manpages as well in this case?

Coogan

2009-10-19 17:04

reporter   ~0001536

Forget the previously provided patches and use the new ones instead.
Both should apply cleanly to r2766.

2009-10-19 17:04

 

diff-doc-efun-en.patch (197,133 bytes)   
diff -c efun.orig/abs efun/abs
*** efun.orig/abs	2009-10-09 16:04:55.000000000 +0000
--- efun/abs	2009-10-18 21:40:50.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int   abs (int arg)
!         float abs (float arg)
  
  DESCRIPTION
          Returns the absolute value of the argument <arg>.
--- 1,6 ----
  SYNOPSIS
!         int   abs(int arg)
!         float abs(float arg)
  
  DESCRIPTION
          Returns the absolute value of the argument <arg>.
diff -c efun.orig/add_action efun/add_action
*** efun.orig/add_action	2009-10-09 16:04:55.000000000 +0000
--- efun/add_action	2009-10-15 21:02:45.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/commands.h>
  
          void add_action(string fun, string cmd)
          void add_action(string fun, string cmd, int flag)
--- 1,5 ----
  SYNOPSIS
!         #include <commands.h>
  
          void add_action(string fun, string cmd)
          void add_action(string fun, string cmd, int flag)
diff -c efun.orig/all_environment efun/all_environment
*** efun.orig/all_environment	2009-10-09 16:04:55.000000000 +0000
--- efun/all_environment	2009-10-18 21:14:42.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object *all_environment()
!         object *all_environment(object o)
  
  DESCRIPTION
          Returns an array with all environments object <o> is in. If <o> is
--- 1,6 ----
  SYNOPSIS
!         object * all_environment()
!         object * all_environment(object o)
  
  DESCRIPTION
          Returns an array with all environments object <o> is in. If <o> is
***************
*** 8,20 ****
  
          If <o> has no environment, or if <o> is destructed, 0 is returned.
  
! EXAMPLE
          If o is a match in a matchbox which is in a box in a chest,
          in a room, all_environment(o) will return
          ({ matchbox, box, chest, room }).
  
  HISTORY
!         Introduced in LDMud 3.2.6, suggested by TubMud.
  
  SEE ALSO
          environment(E), all_inventory(E)
--- 8,20 ----
  
          If <o> has no environment, or if <o> is destructed, 0 is returned.
  
! EXAMPLES
          If o is a match in a matchbox which is in a box in a chest,
          in a room, all_environment(o) will return
          ({ matchbox, box, chest, room }).
  
  HISTORY
!         Introduced in LDMud 3.2.6, suggested by Tubmud.
  
  SEE ALSO
          environment(E), all_inventory(E)
diff -c efun.orig/all_inventory efun/all_inventory
*** efun.orig/all_inventory	2009-10-09 16:04:55.000000000 +0000
--- efun/all_inventory	2009-10-18 21:14:49.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object *all_inventory()
!         object *all_inventory(object ob)
  
  DESCRIPTION
          Returns an array of the objects contained in the inventory of
--- 1,6 ----
  SYNOPSIS
!         object * all_inventory()
!         object * all_inventory(object ob)
  
  DESCRIPTION
          Returns an array of the objects contained in the inventory of
diff -c efun.orig/allocate efun/allocate
*** efun.orig/allocate	2009-10-09 16:04:55.000000000 +0000
--- efun/allocate	2009-10-18 21:14:59.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         mixed *allocate(int size)
!         mixed *allocate(int size, mixed init_value)
  
!         mixed *allocate(int* sizes)
!         mixed *allocate(int* sizes, mixed init_value)
  
  DESCRIPTION
          Allocate an array of size elements. The number of elements
--- 1,9 ----
  SYNOPSIS
!         mixed * allocate(int size)
!         mixed * allocate(int size, mixed init_value)
  
!         mixed * allocate(int *sizes)
!         mixed * allocate(int *sizes, mixed init_value)
  
  DESCRIPTION
          Allocate an array of size elements. The number of elements
***************
*** 23,29 ****
          and initialized by the ({ }) operator. The functions only
          use is to construct big empty arrays.
  
! EXAMPLE
          string *buffer;
          buffer = allocate(50);
          buffer = allocate(50, "");
--- 23,29 ----
          and initialized by the ({ }) operator. The functions only
          use is to construct big empty arrays.
  
! EXAMPLES
          string *buffer;
          buffer = allocate(50);
          buffer = allocate(50, "");
diff -c efun.orig/and_bits efun/and_bits
*** efun.orig/and_bits	2009-10-09 16:04:55.000000000 +0000
--- efun/and_bits	2009-10-19 20:49:06.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         string and_bits (string str1, string str2)
  
! DESTRIPTION
          <str1> and <str2> are both bitstrings. The result of the function
          is a bitstring with the binary-and of <str1> and <str2>,
          ie. a string in which a bit is set only if both corresponding
--- 1,7 ----
  SYNOPSIS
!         string and_bits(string str1, string str2)
  
! DESCRIPTION
          <str1> and <str2> are both bitstrings. The result of the function
          is a bitstring with the binary-and of <str1> and <str2>,
          ie. a string in which a bit is set only if both corresponding
diff -c efun.orig/assoc efun/assoc
*** efun.orig/assoc	2009-10-09 16:04:55.000000000 +0000
--- efun/assoc	2009-10-18 21:15:45.000000000 +0000
***************
*** 1,8 ****
  OPTIONAL
  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] )
  
  DESCRIPTION
          All invocation forms search for a <key> in an <alist> (an array
--- 1,8 ----
  OPTIONAL
  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])
  
  DESCRIPTION
          All invocation forms search for a <key> in an <alist> (an array
***************
*** 10,16 ****
          An attempt to search in any other structure will yield an
          unpredictable result.
  
!         Complexity: O( lg(n) ) , where n is the number of keys.
  
  
          1. Form: Key Search
--- 10,16 ----
          An attempt to search in any other structure will yield an
          unpredictable result.
  
!         Complexity: O(lg(n)) , where n is the number of keys.
  
  
          1. Form: Key Search
diff -c efun.orig/atan2 efun/atan2
*** efun.orig/atan2	2009-10-09 16:04:55.000000000 +0000
--- efun/atan2	2009-10-19 16:09:37.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         float atan2 (int|float y, int|float x)
  
  DESCRIPTION
          Returns the angle part of the polar coordinates of the point (x, y)
--- 1,5 ----
  SYNOPSIS
!         float atan2(int|float y, int|float x)
  
  DESCRIPTION
          Returns the angle part of the polar coordinates of the point (x, y)
diff -c efun.orig/attach_erq_demon efun/attach_erq_demon
*** efun.orig/attach_erq_demon	2009-10-09 16:04:55.000000000 +0000
--- efun/attach_erq_demon	2009-10-19 16:09:47.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int attach_erq_demon(object ob, int do_close)
          int attach_erq_demon(string obname, int do_close)
  
  DESCRIPTION
--- 1,5 ----
  SYNOPSIS
!         int attach_erq_demon(object ob,     int do_close)
          int attach_erq_demon(string obname, int do_close)
  
  DESCRIPTION
***************
*** 16,23 ****
          the filename ERQFILE<obname>, which is then the binary to be
          forked off as new erq demon. The communication with this erq
          will take place over unix domain sockets. ERQFILE defaults to
!     BINDIR/erq, where BINDIR is the configuration value for the
!     executable directory.
  
          If there is alreay an erq demon connected to the driver, the
          function will fail unless 'do_close' (default 0) is specified
--- 16,23 ----
          the filename ERQFILE<obname>, which is then the binary to be
          forked off as new erq demon. The communication with this erq
          will take place over unix domain sockets. ERQFILE defaults to
!         BINDIR/erq, where BINDIR is the configuration value for the
!         executable directory.
  
          If there is alreay an erq demon connected to the driver, the
          function will fail unless 'do_close' (default 0) is specified
***************
*** 25,31 ****
          be closed before attaching the new.
          The efun returns 1 on success, else 0.
  
! EXAMPLE
          To restart the (default) erq, write in
          master.c::stale_erq(closure c):
            attach_erq_demon("", 0);
--- 25,31 ----
          be closed before attaching the new.
          The efun returns 1 on success, else 0.
  
! EXAMPLES
          To restart the (default) erq, write in
          master.c::stale_erq(closure c):
            attach_erq_demon("", 0);
diff -c efun.orig/baseof efun/baseof
*** efun.orig/baseof	2009-10-09 16:04:55.000000000 +0000
--- efun/baseof	2009-10-19 16:09:53.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int baseof (struct b, struct s)
  
  DESCRIPTION
          Test if the type of struct <b> is a base of struct <s> (the
--- 1,5 ----
  SYNOPSIS
!         int baseof(struct b, struct s)
  
  DESCRIPTION
          Test if the type of struct <b> is a base of struct <s> (the
diff -c efun.orig/blueprint efun/blueprint
*** efun.orig/blueprint	2009-10-09 16:04:55.000000000 +0000
--- efun/blueprint	2009-10-19 16:11:35.000000000 +0000
***************
*** 1,7 ****
  PRELIMINARY
  SYNOPSIS
!         object blueprint ()
!         object blueprint (string|object ob)
  
  DESCRIPTION
          The efuns returns the blueprint for the given object <ob>, or for
--- 1,7 ----
  PRELIMINARY
  SYNOPSIS
!         object blueprint()
!         object blueprint(string|object ob)
  
  DESCRIPTION
          The efuns returns the blueprint for the given object <ob>, or for
***************
*** 12,17 ****
--- 12,18 ----
  
          For objects with replaced programs, the efun returns the blueprint
          for the replacement program.
+         In COMPAT mode the returned blueprint does not start with a "/".
  
  EXAMPLES
          blueprint("/std/thing"))               -> /std/thing
***************
*** 19,25 ****
          blueprint(clone_object("/std/thing"))  -> /std/thing
  
  HISTORY
!         Introduced in LDMud 3.2.9 .
  
  SEE ALSO
          clones(E), clone_object(E)
--- 20,26 ----
          blueprint(clone_object("/std/thing"))  -> /std/thing
  
  HISTORY
!         Introduced in LDMud 3.2.9.
  
  SEE ALSO
          clones(E), clone_object(E)
diff -c efun.orig/call_direct efun/call_direct
*** efun.orig/call_direct	2009-10-09 16:04:55.000000000 +0000
--- efun/call_direct	2009-10-18 21:15:56.000000000 +0000
***************
*** 1,10 ****
  SYNOPSIS
!         unknown call_direct (object ob, string fun, mixed arg, ...)
!         unknown call_direct (object *ob, string fun, mixed arg, ...)
  
  DESCRIPTION
!         Call a member function <fun> in another object <ob> with an
!         the argument(s) <arg...>. Result is the value returned from
          the called function (or 0 for non-existing or void functions).
  
          This efun is a twin to call_other(), with the difference
--- 1,10 ----
  SYNOPSIS
!         unknown call_direct(object ob, string fun, mixed arg, ...)
!         unknown call_direct(object *ob, string fun, mixed arg, ...)
  
  DESCRIPTION
!         Call a member function <fun> in another object <ob> with 
!         argument(s) <arg...>. Result is the value returned from
          the called function (or 0 for non-existing or void functions).
  
          This efun is a twin to call_other(), with the difference
***************
*** 47,52 ****
--- 47,53 ----
          'unknown', and the result of call_other() must be casted to
          the appropriate type before you can use it for anything.
  
+ 
  EXAMPLES
          // All the following statements call the lfun QueryProp()
          // in the current player with the argument P_SHORT.
***************
*** 61,67 ****
  
          // This statement calls the lfun short() in all interactive users
          // and stores the collected results in a variable.
!         string * s;
  
          s = (string *)call_direct(users(), "short");
  
--- 62,68 ----
  
          // This statement calls the lfun short() in all interactive users
          // and stores the collected results in a variable.
!         string *s;
  
          s = (string *)call_direct(users(), "short");
  
diff -c efun.orig/caller_stack efun/caller_stack
*** efun.orig/caller_stack	2009-10-09 16:04:55.000000000 +0000
--- efun/caller_stack	2009-10-18 21:43:00.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         object *caller_stack()
!         object *caller_stack(int add_interactive)
  
  DESCRIPTION
          Returns an array of the previous_object()s who caused the
--- 1,6 ----
  SYNOPSIS
!         object * caller_stack()
!         object * caller_stack(int add_interactive)
  
  DESCRIPTION
          Returns an array of the previous_object()s who caused the
***************
*** 16,22 ****
          from the closure object: the first is for the bound object,
          the second for the closure object.
  
! EXAMPLE
          interactive object A enters a command which causes
          a call to a function in object B, that one calls a
          function in object C and that, in turn, in object D
--- 16,22 ----
          from the closure object: the first is for the bound object,
          the second for the closure object.
  
! EXAMPLES
          interactive object A enters a command which causes
          a call to a function in object B, that one calls a
          function in object C and that, in turn, in object D
***************
*** 25,31 ****
          If it calls caller_stack(1) the result is: ({C,B,A}).
  
  HISTORY
!         Introduced in LDMud 3.2.6, suggested by TubMud.
  
  SEE ALSO
          caller_stack_depth(E), previous_object(E), this_interactive(E),
--- 25,31 ----
          If it calls caller_stack(1) the result is: ({C,B,A}).
  
  HISTORY
!         Introduced in LDMud 3.2.6, suggested by Tubmud.
  
  SEE ALSO
          caller_stack_depth(E), previous_object(E), this_interactive(E),
diff -c efun.orig/call_other efun/call_other
*** efun.orig/call_other	2009-10-09 16:04:55.000000000 +0000
--- efun/call_other	2009-10-19 19:21:38.000000000 +0000
***************
*** 53,59 ****
          the appropriate type before you can use it for anything.
  
  EXAMPLES
- 
          // All the following statements call the lfun QueryProp()
          // in the current player with the argument P_SHORT.
          string str, fun;
--- 53,58 ----
***************
*** 72,82 ****
  
          // This statement calls the lfun short() in all interactive users
          // and stores the collected results in a variable.
!         string * s;
  
          s = (string *)users()->short();
  
- 
          !Compat: call_other("/users/luser/thing", "???", 0);
           Compat: call_other("users/luser/thing", "???", 0);
  
--- 71,80 ----
  
          // This statement calls the lfun short() in all interactive users
          // and stores the collected results in a variable.
!         string *s;
  
          s = (string *)users()->short();
  
          !Compat: call_other("/users/luser/thing", "???", 0);
           Compat: call_other("users/luser/thing", "???", 0);
  
***************
*** 93,99 ****
           - a simul_efun call_other() also catches ->() calls.
           - call_other can be applied on arrays of objects.
          LDMud 3.2.10 made the call on arrays of objects configurable.
- 
          LDMud 3.3.113 introduced the H_DEFAULT_METHOD hook.
  
  SEE ALSO
--- 91,96 ----
diff -c efun.orig/call_out efun/call_out
*** efun.orig/call_out	2009-10-09 16:04:55.000000000 +0000
--- efun/call_out	2009-10-15 21:20:45.000000000 +0000
***************
*** 32,38 ****
          If two call_out()s were started with the same target time
          the one that was issued first will be executed first.
  
! EXAMPLE
          call_out("RefreshMe", 10);
  
          This will call the function RefreshMe() in 10 seconds without
--- 32,38 ----
          If two call_out()s were started with the same target time
          the one that was issued first will be executed first.
  
! EXAMPLES
          call_out("RefreshMe", 10);
  
          This will call the function RefreshMe() in 10 seconds without
diff -c efun.orig/call_out_info efun/call_out_info
*** efun.orig/call_out_info	2009-10-09 16:04:55.000000000 +0000
--- efun/call_out_info	2009-10-18 21:16:19.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed *call_out_info(void)
  
  DESCRIPTION
          Get information about all pending call outs. The result is an
--- 1,5 ----
  SYNOPSIS
!         mixed * call_out_info(void)
  
  DESCRIPTION
          Get information about all pending call outs. The result is an
diff -c efun.orig/cat efun/cat
*** efun.orig/cat	2009-10-09 16:04:55.000000000 +0000
--- efun/cat	2009-10-15 21:20:51.000000000 +0000
***************
*** 23,29 ****
          code. Use either a combination of read_bytes() + tell_object() or the
          sefun cat() from the driver package.
  
! EXAMPLE
          cat("/doc/efun/cat", 5, 9);
  
          This will print out the file "/doc/efun/cat" begining at line
--- 23,29 ----
          code. Use either a combination of read_bytes() + tell_object() or the
          sefun cat() from the driver package.
  
! EXAMPLES
          cat("/doc/efun/cat", 5, 9);
  
          This will print out the file "/doc/efun/cat" begining at line
diff -c efun.orig/catch efun/catch
*** efun.orig/catch	2009-10-09 16:04:55.000000000 +0000
--- efun/catch	2009-10-19 16:12:11.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         mixed catch (expr, expr, ...)
!         mixed catch (expr, expr, ... ; modifiers)
  
  DESCRIPTION
          Evaluate the expressions. If there is no error, 0 is returned.
--- 1,6 ----
  SYNOPSIS
!         mixed catch(expr, expr, ...)
!         mixed catch(expr, expr, ... ; modifiers)
  
  DESCRIPTION
          Evaluate the expressions. If there is no error, 0 is returned.
***************
*** 43,51 ****
          of whether they are caught or not, as they include the generation 
          of the stack backtrace.
  
!         catch() is not really an efun, but a compiler directive.
  
! EXAMPLE
          object obj;
          string err;
          if (err = catch(obj = clone_object("/foo/bar/baz")))
--- 43,51 ----
          of whether they are caught or not, as they include the generation 
          of the stack backtrace.
  
!         catch() is not really an efun but a compiler directive.
  
! EXAMPLES
          object obj;
          string err;
          if (err = catch(obj = clone_object("/foo/bar/baz")))
diff -c efun.orig/ceil efun/ceil
*** efun.orig/ceil	2009-10-09 16:04:55.000000000 +0000
--- efun/ceil	2009-10-19 20:47:40.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         float ceil (int|float arg)
  
  DESCRIPTION
          Round the <arg>ument upwards the nearest whole number, returning
--- 1,5 ----
  SYNOPSIS
!         float ceil(int|float arg)
  
  DESCRIPTION
          Round the <arg>ument upwards the nearest whole number, returning
***************
*** 7,15 ****
          be that value, converted to float.
  
  EXAMPLES
!         ceil(4.5)  - return 5.0
!         ceil(-4.5) - return -4.0
!         ceil(4)    - return 4.0
  
  HISTORY
          Introduced in LDMud 3.2.7.
--- 7,15 ----
          be that value, converted to float.
  
  EXAMPLES
!         ceil(4.5)  - returns 5.0
!         ceil(-4.5) - returns -4.0
!         ceil(4)    - returns 4.0
  
  HISTORY
          Introduced in LDMud 3.2.7.
diff -c efun.orig/clone_object efun/clone_object
*** efun.orig/clone_object	2009-10-09 16:04:55.000000000 +0000
--- efun/clone_object	2009-10-15 21:21:07.000000000 +0000
***************
*** 40,46 ****
          In the absence of share_variables, variables without explicit
          initializers are initialized to 0.
  
! EXAMPLE
          // Clone a torch (filename in non-compat format)
          object torch;
          torch = clone_object("/obj/torch");
--- 40,47 ----
          In the absence of share_variables, variables without explicit
          initializers are initialized to 0.
  
! 
! EXAMPLES
          // Clone a torch (filename in non-compat format)
          object torch;
          torch = clone_object("/obj/torch");
diff -c efun.orig/clonep efun/clonep
*** efun.orig/clonep	2009-10-09 16:04:55.000000000 +0000
--- efun/clonep	2009-10-19 16:12:25.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         int clonep ()
!         int clonep (object obj)
!         int clonep (string obj)
!         int clonep (mixed  arg)
  
  DESCRIPTION
          The efun returns 1 if <obj> is a clone, and 0 if it is not.
--- 1,8 ----
  SYNOPSIS
!         int clonep()
!         int clonep(object obj)
!         int clonep(string obj)
!         int clonep(mixed  arg)
  
  DESCRIPTION
          The efun returns 1 if <obj> is a clone, and 0 if it is not.
***************
*** 11,17 ****
          Arguments of other types return 0.
          Objects with replaced programs no longer count as clones.
  
! EXAMPLE
          object o;
          o = clone_object("/std/thing");
          write(clonep(o));                           --> writes "1"
--- 11,17 ----
          Arguments of other types return 0.
          Objects with replaced programs no longer count as clones.
  
! EXAMPLES
          object o;
          o = clone_object("/std/thing");
          write(clonep(o));                           --> writes "1"
diff -c efun.orig/clones efun/clones
*** efun.orig/clones	2009-10-09 16:04:55.000000000 +0000
--- efun/clones	2009-10-19 16:12:44.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         object* clones ()
!         object* clones (int what)
!         object* clones (string|object obj [, int what])
  
  DESCRIPTION
          The efuns returns an array with all clones of a certain blueprint.
--- 1,7 ----
  SYNOPSIS
!         object * clones()
!         object * clones(int what)
!         object * clones(string|object obj [, int what])
  
  DESCRIPTION
          The efuns returns an array with all clones of a certain blueprint.
***************
*** 23,31 ****
          If the driver is compiled with DYNAMIC_COSTS, the cost of this
          efun is proportional to the number of objects in the game.
  
! EXAMPLE
          object o, p;
!         o = clone_object("/std/thing"); /* or "std/thing" in COMPAT_MODE */
          destruct(find_object("/std/thing"));
          p = clone_object("/std/thing");
  
--- 23,31 ----
          If the driver is compiled with DYNAMIC_COSTS, the cost of this
          efun is proportional to the number of objects in the game.
  
! EXAMPLES
          object o, p;
!         o = clone_object("/std/thing"); /* or "std/thing" in COMPAT mode */
          destruct(find_object("/std/thing"));
          p = clone_object("/std/thing");
  
diff -c efun.orig/command_stack efun/command_stack
*** efun.orig/command_stack	2009-10-09 16:04:55.000000000 +0000
--- efun/command_stack	2009-10-18 20:46:51.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/commands.h>
  
          mixed * command_stack(void)
  
--- 1,5 ----
  SYNOPSIS
!         #include <commands.h>
  
          mixed * command_stack(void)
  
diff -c efun.orig/configure_driver efun/configure_driver
*** efun.orig/configure_driver	2009-10-09 16:04:55.000000000 +0000
--- efun/configure_driver	2009-10-19 16:12:55.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/configuration.h>
  
!         void configure_driver (int what, mixed data)
  
  DESCRIPTION
          Sets the option <what> to the value <data>.
--- 1,7 ----
  SYNOPSIS
!         #include <configuration.h>
  
!         void configure_driver(int what, mixed data)
  
  DESCRIPTION
          Sets the option <what> to the value <data>.
***************
*** 15,20 ****
--- 15,21 ----
             be integers giving the amount of memory in bytes.
             ({<soft memory limit>, <hard memory limit>})
  
+ 
  HISTORY
          Introduced in LDMud 3.3.719.
  
diff -c efun.orig/configure_interactive efun/configure_interactive
*** efun.orig/configure_interactive	2009-10-09 16:04:55.000000000 +0000
--- efun/configure_interactive	2009-10-19 16:12:57.000000000 +0000
***************
*** 1,15 ****
  SYNOPSIS
!         #include <sys/configuration.h>
  
!         void configure_interactive (object ob, int what, mixed data)
  
  DESCRIPTION
          Sets the option <what> to the value <data> on the interactive <ob>
          or the default for all interactives if <ob> is 0.
  
!         If the first argument <ob> is not this_object(), the privilege violation
!         ("configure_interactive", this_object(), ob, what, data) occurs.
  
  
          <what> == IC_MAX_WRITE_BUFFER_SIZE
  
--- 1,17 ----
  SYNOPSIS
!         #include <configuration.h>
  
!         void configure_interactive(object ob, int what, mixed data)
  
  DESCRIPTION
          Sets the option <what> to the value <data> on the interactive <ob>
          or the default for all interactives if <ob> is 0.
  
!         If the first argument <ob> is not this_object(), the privilege
!         violation ("configure_interactive", this_object(), ob, what, data)
!         occurs.
  
+         As <what>, the following arguments are accepted:
  
          <what> == IC_MAX_WRITE_BUFFER_SIZE
  
***************
*** 17,22 ****
--- 19,25 ----
            per player to <data> bytes. A value of -1 means unlimited,
            0 deactivates the write buffer.
  
+ 
  HISTORY
          Introduced in LDMud 3.3.719.
  
diff -c efun.orig/convert_charset efun/convert_charset
*** efun.orig/convert_charset	2009-10-09 16:04:55.000000000 +0000
--- efun/convert_charset	2009-10-19 16:13:05.000000000 +0000
***************
*** 84,93 ****
                  RISCOS-LATIN1
  
  
! EXAMPLE
          convert_charset("Hi!", "ascii", "utf-8")
  
  HISTORY
!         Introduced in LDMud 3.3.531 .
  
  SEE ALSO
--- 84,93 ----
                  RISCOS-LATIN1
  
  
! EXAMPLES
          convert_charset("Hi!", "ascii", "utf-8")
  
  HISTORY
!         Introduced in LDMud 3.3.531.
  
  SEE ALSO
diff -c efun.orig/copy efun/copy
*** efun.orig/copy	2009-10-09 16:04:55.000000000 +0000
--- efun/copy	2009-10-18 21:16:30.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed copy (mixed arg)
  
  DESCRIPTION
          Create a shallow copy of <arg> and return it. For arrays and mappings
--- 1,5 ----
  SYNOPSIS
!         mixed copy(mixed arg)
  
  DESCRIPTION
          Create a shallow copy of <arg> and return it. For arrays and mappings
***************
*** 8,14 ****
  
          For other values this function is a no-op.
  
! EXAMPLE
          mixed *a, *b;
  
          a = ({ 1, ({ 21, 22 }) });
--- 8,14 ----
  
          For other values this function is a no-op.
  
! EXAMPLES
          mixed *a, *b;
  
          a = ({ 1, ({ 21, 22 }) });
diff -c efun.orig/copy_bits efun/copy_bits
*** efun.orig/copy_bits	2009-10-09 16:04:55.000000000 +0000
--- efun/copy_bits	2009-10-19 16:13:24.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
          string copy_bits(string src, string dest
!                          [, int srcstart [, int deststart [, int copylen ]]]
!                         )
  
  DESCRIPTION
          Copy the bitrange [<srcstart>..<srcstart>+<copylen>[ from
--- 1,6 ----
  SYNOPSIS
          string copy_bits(string src, string dest
!                          [, int srcstart [, int deststart [, int copylen ]]])
  
  DESCRIPTION
          Copy the bitrange [<srcstart>..<srcstart>+<copylen>[ from
***************
*** 36,42 ****
            (The src[]/dest[] is just for explanatory purposes!)
  
  HISTORY
!         Introduced in LDMud 3.3.166
  
  SEE ALSO
          clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
--- 35,41 ----
            (The src[]/dest[] is just for explanatory purposes!)
  
  HISTORY
!         Introduced in LDMud 3.3.166.
  
  SEE ALSO
          clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
diff -c efun.orig/copy_file efun/copy_file
*** efun.orig/copy_file	2009-10-09 16:04:55.000000000 +0000
--- efun/copy_file	2009-10-15 21:21:40.000000000 +0000
***************
*** 12,18 ****
          On successfull completion copy_file() will return 0. If any error
          occurs, a non-zero value is returned.
  
! EXAMPLE
          copy_file("/players/wizard/obj.c", "/players/wizard/newobj.c");
  
  HISTORY
--- 12,18 ----
          On successfull completion copy_file() will return 0. If any error
          occurs, a non-zero value is returned.
  
! EXAMPLES
          copy_file("/players/wizard/obj.c", "/players/wizard/newobj.c");
  
  HISTORY
diff -c efun.orig/count_bits efun/count_bits
*** efun.orig/count_bits	2009-10-09 16:04:55.000000000 +0000
--- efun/count_bits	2009-10-19 20:49:11.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         int count_bits (string str)
  
! DESTRIPTION
          Count the number of set bits in bitstring <str> and return the number
          as result.
  
--- 1,7 ----
  SYNOPSIS
!         int count_bits(string str)
  
! DESCRIPTION
          Count the number of set bits in bitstring <str> and return the number
          as result.
  
diff -c efun.orig/ctime efun/ctime
*** efun.orig/ctime	2009-10-09 16:04:55.000000000 +0000
--- efun/ctime	2009-10-18 21:11:17.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
          string ctime(int clock)
!         string ctime(int* uclock)
  
  DESCRIPTION
          Interpret the argument clock as number of seconds since Jan,
--- 1,6 ----
  SYNOPSIS
          string ctime(int clock)
!         string ctime(int *uclock)
  
  DESCRIPTION
          Interpret the argument clock as number of seconds since Jan,
***************
*** 12,18 ****
          of seconds like before, int[1] is the number of microseconds within
          that second.
  
! EXAMPLE
          write(ctime()+"\n");
  
          This will print out something like "Fri Jul 17 19:13:33 1992".
--- 12,18 ----
          of seconds like before, int[1] is the number of microseconds within
          that second.
  
! EXAMPLES
          write(ctime()+"\n");
  
          This will print out something like "Fri Jul 17 19:13:33 1992".
diff -c efun.orig/db_coldefs efun/db_coldefs
*** efun.orig/db_coldefs	2009-10-09 16:04:55.000000000 +0000
--- efun/db_coldefs	2009-10-19 16:13:40.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         string * db_coldefs (int handle)
  
  DESCRIPTION
          Return an array with the column names of the current table.
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         string * db_coldefs(int handle)
  
  DESCRIPTION
          Return an array with the column names of the current table.
***************
*** 13,19 ****
          The efun triggers a privilege violation ("mysql", "db_coldefs").
  
  HISTORY
!         Added in 3.2.9 .
          LDMud 3.2.11 added the privilege violation.
  
  SEE ALSO
--- 13,19 ----
          The efun triggers a privilege violation ("mysql", "db_coldefs").
  
  HISTORY
!         Added in 3.2.9.
          LDMud 3.2.11 added the privilege violation.
  
  SEE ALSO
diff -c efun.orig/db_handles efun/db_handles
*** efun.orig/db_handles	2009-10-09 16:04:55.000000000 +0000
--- efun/db_handles	2009-10-18 21:16:52.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         int *db_handles()
  
  DESCRIPTION
          Returns an array with all open handles to the SQL-server.
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         int * db_handles()
  
  DESCRIPTION
          Returns an array with all open handles to the SQL-server.
diff -c efun.orig/db_insert_id efun/db_insert_id
*** efun.orig/db_insert_id	2009-10-09 16:04:55.000000000 +0000
--- efun/db_insert_id	2009-10-19 16:13:43.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         int db_insert_id (int handle)
  
  DESCRIPTION
          After inserting a line into a table with an AUTO_INCREMENT field,
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         int db_insert_id(int handle)
  
  DESCRIPTION
          After inserting a line into a table with an AUTO_INCREMENT field,
diff -c efun.orig/debug_info efun/debug_info
*** efun.orig/debug_info	2009-10-09 16:04:55.000000000 +0000
--- efun/debug_info	2009-10-18 20:47:33.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/debug_info.h>
  
          mixed debug_info(int flag)
          mixed debug_info(int flag, mixed arg)
--- 1,5 ----
  SYNOPSIS
!         #include <debug_info.h>
  
          mixed debug_info(int flag)
          mixed debug_info(int flag, mixed arg)
***************
*** 101,107 ****
                NOTE: Make sure that this option can't be abused!
   
  
- 
          DINFO_DATA (6): Return raw information about an aspect of
              the driver specified by <arg2>. The result of the function
              is an array with the information, or 0 for unsupported values
--- 101,106 ----
***************
*** 631,637 ****
          LDMud 3.3.679 removed DID_ST_IT_OVERHEAD and DID_ST_ITABLED*;
              added DID_ST_HYBRID_MAPPINGS and DID_ST_HASH_MAPPINGS.
          LDMud 3.3.718 added DIT_CURRENT_DEPTH to DINFO_TRACE.
!         LDMud 3.3.719 added DINFO_EVAL_NUMBER
  
  SEE ALSO
          trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)
--- 630,636 ----
          LDMud 3.3.679 removed DID_ST_IT_OVERHEAD and DID_ST_ITABLED*;
              added DID_ST_HYBRID_MAPPINGS and DID_ST_HASH_MAPPINGS.
          LDMud 3.3.718 added DIT_CURRENT_DEPTH to DINFO_TRACE.
!         LDMud 3.3.719 added DINFO_EVAL_NUMBER.
  
  SEE ALSO
          trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)
diff -c efun.orig/debug_message efun/debug_message
*** efun.orig/debug_message	2009-10-09 16:04:55.000000000 +0000
--- efun/debug_message	2009-10-19 19:27:44.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/debug_message.h>
  
          void debug_message(string text)
          void debug_message(string text, int flags)
--- 1,5 ----
  SYNOPSIS
!         #include <debug_message.h>
  
          void debug_message(string text)
          void debug_message(string text, int flags)
***************
*** 18,24 ****
          If <flags> is given as 0, left out, or contains no target
          definition, debug_message() will print to stdout and to the logfile.
  
! EXAMPLE
          debug_message("This goes to stdout and the logfile.\n");
          debug_message("This goes to stderr.\n", DMSG_STDERR);
          debug_message("This goes to stdout and stderr.\n"
--- 18,25 ----
          If <flags> is given as 0, left out, or contains no target
          definition, debug_message() will print to stdout and to the logfile.
  
! 
! EXAMPLES
          debug_message("This goes to stdout and the logfile.\n");
          debug_message("This goes to stderr.\n", DMSG_STDERR);
          debug_message("This goes to stdout and stderr.\n"
***************
*** 30,36 ****
                       , DMSG_STDOUT | DMSG_STAMP);
  
  HISTORY
!         Introduced in 3.2.1@34
          LDMud 3.2.9 introduced the <flags> parameter.
  
  SEE ALSO
--- 31,37 ----
                       , DMSG_STDOUT | DMSG_STAMP);
  
  HISTORY
!         Introduced in 3.2.1@34.
          LDMud 3.2.9 introduced the <flags> parameter.
  
  SEE ALSO
diff -c efun.orig/deep_copy efun/deep_copy
*** efun.orig/deep_copy	2009-10-09 16:04:55.000000000 +0000
--- efun/deep_copy	2009-10-18 21:17:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed deep_copy (mixed arg)
  
  DESCRIPTION
          Create a deep copy of <arg> and return it. For arrays and mappings
--- 1,5 ----
  SYNOPSIS
!         mixed deep_copy(mixed arg)
  
  DESCRIPTION
          Create a deep copy of <arg> and return it. For arrays and mappings
***************
*** 11,17 ****
          If DYNAMIC_COST is defined, every nested mapping or array counts
          towards the evaluation cost in both size and nesting depth.
  
! EXAMPLE
          mixed *a, *b;
  
          a = ({ 1, ({ 21, 22 }) });
--- 11,17 ----
          If DYNAMIC_COST is defined, every nested mapping or array counts
          towards the evaluation cost in both size and nesting depth.
  
! EXAMPLES
          mixed *a, *b;
  
          a = ({ 1, ({ 21, 22 }) });
diff -c efun.orig/deep_inventory efun/deep_inventory
*** efun.orig/deep_inventory	2009-10-09 16:04:55.000000000 +0000
--- efun/deep_inventory	2009-10-18 21:19:29.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         object *deep_inventory(void)
!         object *deep_inventory(object ob)
!         object *deep_inventory(object ob, int depth)
  
  DESCRIPTION
          Returns an array of the objects contained in the inventory of
--- 1,7 ----
  SYNOPSIS
!         object * deep_inventory(void)
!         object * deep_inventory(object ob)
!         object * deep_inventory(object ob, int depth)
  
  DESCRIPTION
          Returns an array of the objects contained in the inventory of
***************
*** 12,35 ****
  
            <depth> > 0: Only the objects in the first <depth> levels of
                         inventory are returned.
!           <depth> < 0: Only the object in level -<depth> of inventory are
                         returned.
  
          In this, level '1' is the inventory of <ob> itself.
  
! EXAMPLE
          ob
          +- ob1
          +- ob2
!         |   +- ob21
          |  ob3
!         |   +- ob31
          +- ob4
  
! 
!         deep_inventory(ob) => ({ob1, ob2, ob3, ob4, ob21, ob31})
!         deep_inventory(ob, 1) => ({ob1, ob2, ob3, ob4})
!         deep_inventory(ob, 2) => ({ob1, ob2, ob3, ob4, ob21, ob31})
          deep_inventory(ob, -2) => ({ob21, ob31})
  
  HISTORY
--- 12,36 ----
  
            <depth> > 0: Only the objects in the first <depth> levels of
                         inventory are returned.
!           <depth> < 0: Only the objects in level -<depth> of inventory are
                         returned.
  
          In this, level '1' is the inventory of <ob> itself.
  
! EXAMPLES
!         Given the following inventory structure
! 
          ob
          +- ob1
          +- ob2
!         |   `- ob21
          |  ob3
!         |   `- ob31
          +- ob4
  
!         deep_inventory(ob)     => ({ob1, ob2, ob3, ob4, ob21, ob31})
!         deep_inventory(ob, 1)  => ({ob1, ob2, ob3, ob4})
!         deep_inventory(ob, 2)  => ({ob1, ob2, ob3, ob4, ob21, ob31})
          deep_inventory(ob, -2) => ({ob21, ob31})
  
  HISTORY
diff -c efun.orig/destruct efun/destruct
*** efun.orig/destruct	2009-10-09 16:04:55.000000000 +0000
--- efun/destruct	2009-10-15 21:21:57.000000000 +0000
***************
*** 28,34 ****
          although the object is not visible anywhere anymore from
          outside.
  
! EXAMPLE
          ob->remove();
          if(ob)        /* still there, probably ob does not provide remove() */
             destruct(ob);
--- 28,34 ----
          although the object is not visible anywhere anymore from
          outside.
  
! EXAMPLES
          ob->remove();
          if(ob)        /* still there, probably ob does not provide remove() */
             destruct(ob);
diff -c efun.orig/efun efun/efun
*** efun.orig/efun	2009-10-09 16:04:55.000000000 +0000
--- efun/efun	2009-10-19 16:15:05.000000000 +0000
***************
*** 48,59 ****
  
           - 'deprecated' or 'obsolete'
  
               make_shared_string()
               md5()
               sha1()
  
-            These efuns should no longer be used, they are merely provided
-            for backwards compatibility:
  
  SEE ALSO
          efuns(LPC), applied(A), master(M), lpc(LPC), concepts(C), driver(D)
--- 48,60 ----
  
           - 'deprecated' or 'obsolete'
  
+            These efuns should no longer be used, they are merely provided
+            for backwards compatibility:
+ 
               make_shared_string()
               md5()
               sha1()
  
  
  SEE ALSO
          efuns(LPC), applied(A), master(M), lpc(LPC), concepts(C), driver(D)
diff -c efun.orig/enable_commands efun/enable_commands
*** efun.orig/enable_commands	2009-10-09 16:04:55.000000000 +0000
--- efun/enable_commands	2009-10-15 21:22:02.000000000 +0000
***************
*** 9,15 ****
          create() (or reset(0) in compat mode), because the command
          giver will be set to this object.
  
! EXAMPLE
          void create() {
             enable_commands();
             set_living_name("dummymonster");
--- 9,15 ----
          create() (or reset(0) in compat mode), because the command
          giver will be set to this object.
  
! EXAMPLES
          void create() {
             enable_commands();
             set_living_name("dummymonster");
diff -c efun.orig/enable_telnet efun/enable_telnet
*** efun.orig/enable_telnet	2009-10-09 16:04:55.000000000 +0000
--- efun/enable_telnet	2009-10-19 16:20:08.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int enable_telnet (int num, object obj = this_interactive() )
  
  DESCRIPTION
          Enable or disable the telnet machine for the interactive object <obj>.
--- 1,6 ----
  SYNOPSIS
!         int enable_telnet(int num)
!         int enable_telnet(int num, object obj)
  
  DESCRIPTION
          Enable or disable the telnet machine for the interactive object <obj>.
diff -c efun.orig/environment efun/environment
*** efun.orig/environment	2009-10-09 16:04:55.000000000 +0000
--- efun/environment	2009-10-15 21:22:04.000000000 +0000
***************
*** 10,16 ****
  
          Destructed objects do not have an environment.
  
! EXAMPLE
          object room;
          room = environment(this_player());
  
--- 10,16 ----
  
          Destructed objects do not have an environment.
  
! EXAMPLES
          object room;
          room = environment(this_player());
  
diff -c efun.orig/exec efun/exec
*** efun.orig/exec	2009-10-09 16:04:55.000000000 +0000
--- efun/exec	2009-10-15 21:22:08.000000000 +0000
***************
*** 27,33 ****
          bind_lambda() to bind #'exec to the real object and funcall()
          the resulting closure.
  
! EXAMPLE
          ob = clone_object("std/player");
          exec(ob, this_object());
          destruct(this_object());
--- 27,33 ----
          bind_lambda() to bind #'exec to the real object and funcall()
          the resulting closure.
  
! EXAMPLES
          ob = clone_object("std/player");
          exec(ob, this_object());
          destruct(this_object());
diff -c efun.orig/execute_command efun/execute_command
*** efun.orig/execute_command	2009-10-09 16:04:55.000000000 +0000
--- efun/execute_command	2009-10-19 16:17:04.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
! 
!         int execute_command (string command, object origin, object player)
  
  DESCRIPTION
          Low-level access to the command parser: take the <command>, parse it
--- 1,5 ----
  SYNOPSIS
!         int execute_command(string command, object origin, object player)
  
  DESCRIPTION
          Low-level access to the command parser: take the <command>, parse it
***************
*** 21,27 ****
          but must be evaluated by the caller.
  
  HISTORY
!         Introduced in LDMud 3.2.7
  
  SEE ALSO
          hooks(C), match_command(E), command(E), notify_fail(E),
--- 20,26 ----
          but must be evaluated by the caller.
  
  HISTORY
!         Introduced in LDMud 3.2.7.
  
  SEE ALSO
          hooks(C), match_command(E), command(E), notify_fail(E),
diff -c efun.orig/expand_define efun/expand_define
*** efun.orig/expand_define	2009-10-09 16:04:55.000000000 +0000
--- efun/expand_define	2009-10-19 16:17:10.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         string expand_define (string name)
!         string expand_define (string name, string arg, ...)
  
  DESCRIPTION
          Expands the macro <name> with the argument(s) <arg>... (default is
--- 1,6 ----
  SYNOPSIS
!         string expand_define(string name)
!         string expand_define(string name, string arg, ...)
  
  DESCRIPTION
          Expands the macro <name> with the argument(s) <arg>... (default is
***************
*** 13,19 ****
          H_INCLUDE_DIRS driver hook, or the masters runtime_error()
          function.
  
! EXAMPLE
          While compiling 'foo.c':
            expand_define("__FILE__") --> "foo.c"
  
--- 13,19 ----
          H_INCLUDE_DIRS driver hook, or the masters runtime_error()
          function.
  
! EXAMPLES
          While compiling 'foo.c':
            expand_define("__FILE__") --> "foo.c"
  
diff -c efun.orig/explode efun/explode
*** efun.orig/explode	2009-10-09 16:04:55.000000000 +0000
--- efun/explode	2009-10-18 21:19:53.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string *explode(string str, string del)
  
  DESCRIPTION
          Return an array of strings, created when the string str is split
--- 1,5 ----
  SYNOPSIS
!         string * explode(string str, string del)
  
  DESCRIPTION
          Return an array of strings, created when the string str is split
diff -c efun.orig/file_size efun/file_size
*** efun.orig/file_size	2009-10-09 16:04:55.000000000 +0000
--- efun/file_size	2009-10-15 21:07:25.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)
  
***************
*** 10,14 ****
--- 10,15 ----
          or that it is not readable for the calling object/user.
          Size FSIZE_DIR (-2) indicates that it is a directory.
  
+ 
  SEE ALSO
          write_file(E), cat(E), get_dir(E)
diff -c efun.orig/filter efun/filter
*** efun.orig/filter	2009-10-09 16:04:55.000000000 +0000
--- efun/filter	2009-10-19 16:17:45.000000000 +0000
***************
*** 1,17 ****
  SYNOPSIS
!         mixed * filter (mixed *arg, string fun, string|object ob
!                                               , mixed extra...)
!         mixed * filter (mixed *arg, closure cl, mixed extra...)
!         mixed * filter (mixed *arg, mapping map, mixed extra...)
! 
!         string  filter (string arg, string fun, string|object ob
!                                            , mixed extra...)
!         string  filter (string arg, closure cl, mixed extra...)
!         string  filter (string arg, mapping map, mixed extra...)
! 
!         mapping filter (mapping arg, string func, string|object ob
!                                                 , mixed extra...)
!         mapping filter (mapping arg, closure cl, mixed extra...)
  
  DESCRIPTION
          Call the function <ob>-><func>() resp. the closure <cl> for
--- 1,17 ----
  SYNOPSIS
!         mixed * filter(mixed *arg, string fun, string|object ob
!                                              , mixed extra...)
!         mixed * filter(mixed *arg, closure cl, mixed extra...)
!         mixed * filter(mixed *arg, mapping map, mixed extra...)
! 
!         string  filter(string arg, string fun, string|object ob
!                                           , mixed extra...)
!         string  filter(string arg, closure cl, mixed extra...)
!         string  filter(string arg, mapping map, mixed extra...)
! 
!         mapping filter(mapping arg, string func, string|object ob
!                                                , mixed extra...)
!         mapping filter(mapping arg, closure cl, mixed extra...)
  
  DESCRIPTION
          Call the function <ob>-><func>() resp. the closure <cl> for
diff -c efun.orig/filter_objects efun/filter_objects
*** efun.orig/filter_objects	2009-10-09 16:04:55.000000000 +0000
--- efun/filter_objects	2009-10-18 21:20:14.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object *filter_objects(object *arr, string fun, mixed extra, ...)
  
  DESCRIPTION
          Similar to filter_array() but calls arr[n]->fun(extra, ...).
--- 1,5 ----
  SYNOPSIS
!         object * filter_objects(object *arr, string fun, mixed extra, ...)
  
  DESCRIPTION
          Similar to filter_array() but calls arr[n]->fun(extra, ...).
diff -c efun.orig/find_input_to efun/find_input_to
*** efun.orig/find_input_to	2009-10-09 16:04:55.000000000 +0000
--- efun/find_input_to	2009-10-19 16:17:52.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)
  
  DESCRIPTION
          Find the input_to most recently added to the interactive <player>
--- 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)
  
  DESCRIPTION
          Find the input_to most recently added to the interactive <player>
diff -c efun.orig/find_object efun/find_object
*** efun.orig/find_object	2009-10-09 16:04:55.000000000 +0000
--- efun/find_object	2009-10-15 21:22:15.000000000 +0000
***************
*** 5,11 ****
          Find an object with the object_name str. If the object isn't loaded,
          it will not be found.
  
! EXAMPLE
          object obj;
          obj = find_object("std/thing");
          obj = find_object("std/thing.c");
--- 5,11 ----
          Find an object with the object_name str. If the object isn't loaded,
          it will not be found.
  
! EXAMPLES
          object obj;
          obj = find_object("std/thing");
          obj = find_object("std/thing.c");
diff -c efun.orig/floor efun/floor
*** efun.orig/floor	2009-10-09 16:04:55.000000000 +0000
--- efun/floor	2009-10-19 16:18:08.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         float floor (float arg)
  
  DESCRIPTION
          Round the <arg>ument downwards the nearest whole number, returning
--- 1,5 ----
  SYNOPSIS
!         float floor(float arg)
  
  DESCRIPTION
          Round the <arg>ument downwards the nearest whole number, returning
***************
*** 7,15 ****
          be that value, converted to float.
  
  EXAMPLES
!         floor(4.5)  - return 4.0
!         floor(-4.5) - return -5.0
!         floor(5)    - return 5.0
  
  HISTORY
          Introduced in LDMud 3.2.7.
--- 7,15 ----
          be that value, converted to float.
  
  EXAMPLES
!         floor(4.5)  - returns  4.0
!         floor(-4.5) - returns -5.0
!         floor(5)    - returns  5.0
  
  HISTORY
          Introduced in LDMud 3.2.7.
diff -c efun.orig/funcall efun/funcall
*** efun.orig/funcall	2009-10-09 16:04:55.000000000 +0000
--- efun/funcall	2009-10-18 21:20:33.000000000 +0000
***************
*** 31,37 ****
  HISTORY
          Introduced in 3.2@70.
          Returning a non-closure as it is even when args are given was
!         introduced with 3.2.1
  
  SEE ALSO
          apply(E), quote(E)
--- 31,37 ----
  HISTORY
          Introduced in 3.2@70.
          Returning a non-closure as it is even when args are given was
!         introduced with 3.2.1.
  
  SEE ALSO
          apply(E), quote(E)
diff -c efun.orig/function_exists efun/function_exists
*** efun.orig/function_exists	2009-10-09 16:04:55.000000000 +0000
--- efun/function_exists	2009-10-19 19:36:17.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
          #include <functionlist.h>
  
!         mixed function_exists (string str [, int flags])
!         mixed function_exists (string str , object ob, [, int flags])
  
  DESCRIPTION
          Look up a function <str> in the current object, respectively
--- 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)
  
  DESCRIPTION
          Look up a function <str> in the current object, respectively
***************
*** 42,47 ****
--- 44,50 ----
          If the function cannot be found (because it doesn't exist or
          it is not visible to the caller), the result is 0.
  
+ 
  EXAMPLES
          function_exists("create")
          function_exists("create", that_object, NAME_HIDDEN|FEXISTS_ALL);
diff -c efun.orig/functionlist efun/functionlist
*** efun.orig/functionlist	2009-10-09 16:04:55.000000000 +0000
--- efun/functionlist	2009-10-19 20:52:37.000000000 +0000
***************
*** 1,16 ****
  SYNOPSIS
!         #include <sys/functionlist.h>
!         #include <sys/lpctypes.h>
  
!         mixed *functionlist (object ob, int flags = RETURN_FUNCTION_NAME)
  
  DESCRIPTION
!         Return an array with information about <ob>s lfunctions. For every
          function, 1 to 4 values (depending on <flags>) are stored in
          the result array conveying in this order:
            - the name of the function
            - the function flags (see below)
!           - the return type (listed in mudlib/sys/lpctypes.h)
            - the number of accepted argumens
  
          <ob> may be given as true object or as a filename. In the latter
--- 1,16 ----
  SYNOPSIS
!         #include <functionlist.h>
!         #include <lpctypes.h>
  
!         mixed * functionlist(object ob, int flags)
  
  DESCRIPTION
!         Returns an array with information about <ob>s lfunctions. For every
          function, 1 to 4 values (depending on <flags>) are stored in
          the result array conveying in this order:
            - the name of the function
            - the function flags (see below)
!           - the return type (listed in <lpctypes.h>)
            - the number of accepted argumens
  
          <ob> may be given as true object or as a filename. In the latter
***************
*** 19,25 ****
          <flags> determines both which information is returned for every
          function, and which functions should be considered at all.
          Its value is created by bin-or'ing together following flags from
!         mudlib/sys/functionlist.h:
  
            Control of returned information:
              RETURN_FUNCTION_NAME    include the function name
--- 19,25 ----
          <flags> determines both which information is returned for every
          function, and which functions should be considered at all.
          Its value is created by bin-or'ing together following flags from
!         <functionlist.h>:
  
            Control of returned information:
              RETURN_FUNCTION_NAME    include the function name
***************
*** 45,50 ****
--- 45,51 ----
              TYPE_MOD_NO_MASK    function is nomask
              TYPE_MOD_PUBLIC     function is public
  
+ 
  SEE ALSO
          inherit_list(E), function_exists(E), variable_list(E),
          call_resolved(E)
diff -c efun.orig/garbage_collection efun/garbage_collection
*** efun.orig/garbage_collection	2009-10-09 16:04:55.000000000 +0000
--- efun/garbage_collection	2009-10-19 16:19:08.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         void garbage_collection ()
!         void garbage_collection (string filename)
!         void garbage_collection (string filename, int flag)
  
  DESCRIPTION
          Tell the parser to initiate a garbage collection after the
--- 1,7 ----
  SYNOPSIS
!         void garbage_collection()
!         void garbage_collection(string filename)
!         void garbage_collection(string filename, int flag)
  
  DESCRIPTION
          Tell the parser to initiate a garbage collection after the
diff -c efun.orig/get_combine_charset efun/get_combine_charset
*** efun.orig/get_combine_charset	2009-10-09 16:04:55.000000000 +0000
--- efun/get_combine_charset	2009-10-19 16:19:15.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/comm.h>
  
!         mixed get_combine_charset (int mode)
  
  DESCRIPTION
          Return the combine charset of the current interactive in the form
--- 1,7 ----
  SYNOPSIS
!         #include <comm.h>
  
!         mixed get_combine_charset(int mode)
  
  DESCRIPTION
          Return the combine charset of the current interactive in the form
***************
*** 15,21 ****
  
          If there is no current interactive, the function returns 0. 
  
- 
  HISTORY
          Introduced in LDMud 3.2.10.
  
--- 15,20 ----
diff -c efun.orig/get_connection_charset efun/get_connection_charset
*** efun.orig/get_connection_charset	2009-10-09 16:04:55.000000000 +0000
--- efun/get_connection_charset	2009-10-19 16:19:21.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/comm.h>
  
!         mixed get_connection_charset (int mode)
  
  DESCRIPTION
          Return the connection charset of the current interactive in the form
--- 1,7 ----
  SYNOPSIS
!         #include <comm.h>
  
!         mixed get_connection_charset(int mode)
  
  DESCRIPTION
          Return the connection charset of the current interactive in the form
***************
*** 19,25 ****
  
          If there is no current interactive, the function returns 0. 
  
- 
  HISTORY
          Introduced in LDMud 3.2.10.
  
--- 19,24 ----
diff -c efun.orig/get_dir efun/get_dir
*** efun.orig/get_dir	2009-10-09 16:04:55.000000000 +0000
--- efun/get_dir	2009-10-18 20:50:31.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         #include <sys/files.h>
  
!         mixed *get_dir(string str)
!         mixed *get_dir(string str, int mask)
  
  DESCRIPTION
          This function takes a path as argument and returns an array of file
--- 1,8 ----
  SYNOPSIS
!         #include <files.h>
  
!         mixed * get_dir(string str)
!         mixed * get_dir(string str, int mask)
  
  DESCRIPTION
          This function takes a path as argument and returns an array of file
***************
*** 56,62 ****
          (e.g. strip leading or trailing "/") and this may lead to expected
          results (e.g. get_dir("/dir/", ...) not returning the contents
          of /dir/).
!         Compat mode: GETDIR_PATH will return the paths without leading /.
  
  EXAMPLES
          function                         returns
--- 56,62 ----
          (e.g. strip leading or trailing "/") and this may lead to expected
          results (e.g. get_dir("/dir/", ...) not returning the contents
          of /dir/).
!         COMPAT mode: GETDIR_PATH will return the paths without leading /.
  
  EXAMPLES
          function                         returns
***************
*** 87,96 ****
                                           contains for each file in /obj its
                                           name, its size and its modification
                                           date, sorted by names, for example
!                                          ({
!                                              "axe.c"  ,  927, 994539583,
!                                              "sword.c", 1283, 998153903,
!                                              }).
  
          get_dir("/obj/sword.c", GETDIR_NAMES|GETDIR_PATH)
                                           ({ "/obj/sword.c" }) if applicable.
--- 87,96 ----
                                           contains for each file in /obj its
                                           name, its size and its modification
                                           date, sorted by names, for example
!                                            ({
!                                               "axe.c"  ,  927, 994539583,
!                                               "sword.c", 1283, 998153903,
!                                            }).
  
          get_dir("/obj/sword.c", GETDIR_NAMES|GETDIR_PATH)
                                           ({ "/obj/sword.c" }) if applicable.
***************
*** 102,111 ****
                           , get_dir(str, GETDIR_DATES) }));
          This returns an array of arrays, with filename, size and
          filetime as elements, not sorted by names, for example
!         ({
!             ({ "sword.c", 1283, 998153903 }),
!             ({ "axe.c"  ,  927, 994539583 }),
!             }).
  
  HISTORY
          LDMud 3.2.9 added GETDIR_PATH.
--- 102,112 ----
                           , get_dir(str, GETDIR_DATES) }));
          This returns an array of arrays, with filename, size and
          filetime as elements, not sorted by names, for example
!           ({
!              ({ "sword.c", 1283, 998153903 }),
!              ({ "axe.c"  ,  927, 994539583 }),
!           }).
! 
  
  HISTORY
          LDMud 3.2.9 added GETDIR_PATH.
diff -c efun.orig/get_extra_wizinfo efun/get_extra_wizinfo
*** efun.orig/get_extra_wizinfo	2009-10-09 16:04:55.000000000 +0000
--- efun/get_extra_wizinfo	2009-10-19 16:19:41.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         mixed get_extra_wizinfo (object wiz)
!         mixed get_extra_wizinfo (string wiz)
!         mixed get_extra_wizinfo (int    wiz)
  
  DESCRIPTION
          Returns the 'extra' information that was set for the given
--- 1,7 ----
  SYNOPSIS
!         mixed get_extra_wizinfo(object wiz)
!         mixed get_extra_wizinfo(string wiz)
!         mixed get_extra_wizinfo(int    wiz)
  
  DESCRIPTION
          Returns the 'extra' information that was set for the given
diff -c efun.orig/get_max_commands efun/get_max_commands
*** efun.orig/get_max_commands	2009-10-09 16:04:55.000000000 +0000
--- efun/get_max_commands	2009-10-19 16:20:38.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int get_max_commands ()
!         int get_max_commands (object obj)
  
  DESCRIPTION
          Return the max number of commands the interactive <obj> is
--- 1,6 ----
  SYNOPSIS
!         int get_max_commands()
!         int get_max_commands(object obj)
  
  DESCRIPTION
          Return the max number of commands the interactive <obj> is
diff -c efun.orig/gmtime efun/gmtime
*** efun.orig/gmtime	2009-10-09 16:04:55.000000000 +0000
--- efun/gmtime	2009-10-19 16:20:48.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         #include <sys/time.h>
  
          int * gmtime(int clock)
!         int * gmtime(int* uclock)
  
  DESCRIPTION
          Interpret the argument clock as number of seconds since Jan,
--- 1,8 ----
  SYNOPSIS
!         #include <time.h>
  
          int * gmtime(int clock)
!         int * gmtime(int *uclock)
  
  DESCRIPTION
          Interpret the argument clock as number of seconds since Jan,
***************
*** 25,39 ****
            int TM_YDAY  (7) : Day of the year (0..365)
            int TM_ISDST (8) : TRUE: Daylight saving time
  
- EXAMPLES
  
!         printf("Today is %s\n"
!               , ({ "Sunday", "Monday", "Tuesday", "Wednesday"
!                  , "Thursday", "Friday", "Saturday"
!                 })[gmtime()[TM_WDAY]]);
  
  HISTORY
!         Introduced in LDMud 3.2.9
  
  SEE ALSO
          ctime(E), localtime(E), time(E), utime(E)
--- 25,38 ----
            int TM_YDAY  (7) : Day of the year (0..365)
            int TM_ISDST (8) : TRUE: Daylight saving time
  
  
! EXAMPLES
!         printf("Today is %s\n",
!                ({ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
!                   "Friday", "Saturday" })[gmtime()[TM_WDAY]]);
  
  HISTORY
!         Introduced in LDMud 3.2.9.
  
  SEE ALSO
          ctime(E), localtime(E), time(E), utime(E)
diff -c efun.orig/hash efun/hash
*** efun.orig/hash	2009-10-09 16:04:55.000000000 +0000
--- efun/hash	2009-10-18 20:51:41.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/tls.h>
  
          string hash(int method, string arg [, int iterations ] )
          string hash(int method, int *  arg [, int iterations ] )
--- 1,5 ----
  SYNOPSIS
!         #include <tls.h>
  
          string hash(int method, string arg [, int iterations ] )
          string hash(int method, int *  arg [, int iterations ] )
***************
*** 24,29 ****
--- 24,30 ----
  
          The efun costs 10 ticks per iteration.
  
+ 
  EXAMPLES
          string s;
  
***************
*** 31,37 ****
          s = hash(TLS_HASH_SHA1, ({ 'H', 'e', 'l', 'l', 'o' }) )
  
  HISTORY
!         Introduced in LDMud 3.3.714
          LDMud 3.3.719 added the iteration-based evaluation cost.
  
  SEE ALSO
--- 32,38 ----
          s = hash(TLS_HASH_SHA1, ({ 'H', 'e', 'l', 'l', 'o' }) )
  
  HISTORY
!         Introduced in LDMud 3.3.714.
          LDMud 3.3.719 added the iteration-based evaluation cost.
  
  SEE ALSO
diff -c efun.orig/heart_beat_info efun/heart_beat_info
*** efun.orig/heart_beat_info	2009-10-09 16:04:55.000000000 +0000
--- efun/heart_beat_info	2009-10-18 21:22:08.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object *heart_beat_info()
  
  DESCRIPTION
          This function returns an array of all objects having their heart
--- 1,5 ----
  SYNOPSIS
!         object * heart_beat_info()
  
  DESCRIPTION
          This function returns an array of all objects having their heart
diff -c efun.orig/hmac efun/hmac
*** efun.orig/hmac	2009-10-09 16:04:55.000000000 +0000
--- efun/hmac	2009-10-18 20:52:04.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/tls.h>
  
          string hmac(int method, string key, string arg )
          string hmac(int method, string key, int *  arg )
--- 1,5 ----
  SYNOPSIS
!         #include <tls.h>
  
          string hmac(int method, string key, string arg )
          string hmac(int method, string key, int *  arg )
***************
*** 22,27 ****
--- 22,28 ----
          If the driver is compiled without OpenSSL or GCrypt support
          an error is thrown.
  
+ 
  EXAMPLES
          string s;
  
***************
*** 29,35 ****
          s = hmac(TLS_HASH_SHA1, "secret", ({ 'H', 'e', 'l', 'l', 'o' }) )
  
  HISTORY
!         Introduced in LDMud 3.3.714
  
  SEE ALSO
          crypt(E), md5(E), md5_crypt(E), sha1(E), hmac(E)
--- 30,36 ----
          s = hmac(TLS_HASH_SHA1, "secret", ({ 'H', 'e', 'l', 'l', 'o' }) )
  
  HISTORY
!         Introduced in LDMud 3.3.714.
  
  SEE ALSO
          crypt(E), md5(E), md5_crypt(E), sha1(E), hmac(E)
diff -c efun.orig/idna_stringprep efun/idna_stringprep
*** efun.orig/idna_stringprep	2009-10-09 16:04:55.000000000 +0000
--- efun/idna_stringprep	2009-10-19 18:48:17.000000000 +0000
***************
*** 1,14 ****
  OPTIONAL
  SYNOPSIS
!         #include <sys/idn.h>
  
!         string idna_stringprep (string str, int profile, int flags = 0)
  
  DESCRIPTION
          Prepare the UTF-8 string <str> according to the stringprep
          <profile> (see also libidn stringprep(3)).
  
!         <profile> and <flags> are one of the values defined in idn.h .
  
          If an error occurs, an exception is thrown.
  
--- 1,14 ----
  OPTIONAL
  SYNOPSIS
!         #include <idn.h>
  
!         string idna_stringprep(string str, int profile, int flags)
  
  DESCRIPTION
          Prepare the UTF-8 string <str> according to the stringprep
          <profile> (see also libidn stringprep(3)).
  
!         <profile> and <flags> are one of the values defined in <idn.h>.
  
          If an error occurs, an exception is thrown.
  
diff -c efun.orig/idna_to_ascii efun/idna_to_ascii
*** efun.orig/idna_to_ascii	2009-10-09 16:04:55.000000000 +0000
--- efun/idna_to_ascii	2009-10-19 16:21:34.000000000 +0000
***************
*** 1,8 ****
  OPTIONAL
  SYNOPSIS
!         #include <sys/idn.h>
  
!         string idna_to_ascii (string name)
  
  DESCRIPTION
          Convert string <name> from UTF-8 to idna representation (8z punycode).
--- 1,8 ----
  OPTIONAL
  SYNOPSIS
!         #include <idn.h>
  
!         string idna_to_ascii(string name)
  
  DESCRIPTION
          Convert string <name> from UTF-8 to idna representation (8z punycode).
diff -c efun.orig/idna_to_unicode efun/idna_to_unicode
*** efun.orig/idna_to_unicode	2009-10-09 16:04:55.000000000 +0000
--- efun/idna_to_unicode	2009-10-19 16:21:39.000000000 +0000
***************
*** 1,8 ****
  OPTIONAL
  SYNOPSIS
!         #include <sys/idn.h>
  
!         string idna_to_unicode (string name)
  
  DESCRIPTION
          Convert string <name> from idna representation (8z punycode)
--- 1,8 ----
  OPTIONAL
  SYNOPSIS
!         #include <idn.h>
  
!         string idna_to_unicode(string name)
  
  DESCRIPTION
          Convert string <name> from idna representation (8z punycode)
diff -c efun.orig/implode efun/implode
*** efun.orig/implode	2009-10-09 16:04:55.000000000 +0000
--- efun/implode	2009-10-18 21:22:20.000000000 +0000
***************
*** 15,22 ****
          function of strings:
          implode(explode("a short text", " "), "_")      "a_short_text"
  
!         But nowadays You can also use
!         regreplace("a short text", " ", "_", 1)
          instead.
  
  SEE ALSO
--- 15,22 ----
          function of strings:
          implode(explode("a short text", " "), "_")      "a_short_text"
  
!         But nowadays you can also use
!             regreplace("a short text", " ", "_", 1)
          instead.
  
  SEE ALSO
diff -c efun.orig/include_list efun/include_list
*** efun.orig/include_list	2009-10-09 16:04:55.000000000 +0000
--- efun/include_list	2009-10-18 21:22:33.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)
  
  
  DESCRIPTION
--- 1,9 ----
  SYNOPSIS
!         #include <include_list.h>
  
!         string * include_list()
!         string * include_list(object ob)
!         string * include_list(object ob, int flags)
  
  
  DESCRIPTION
diff -c efun.orig/inherit_list efun/inherit_list
*** efun.orig/inherit_list	2009-10-09 16:04:55.000000000 +0000
--- efun/inherit_list	2009-10-18 21:22:49.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)
  
  
  DESCRIPTION
--- 1,9 ----
  SYNOPSIS
!         #include <inherit_list.h>
  
!         string * inherit_list()
!         string * inherit_list(object ob)
!         string * inherit_list(object ob, int flags)
  
  
  DESCRIPTION
diff -c efun.orig/input_to efun/input_to
*** efun.orig/input_to	2009-10-09 16:04:55.000000000 +0000
--- efun/input_to	2009-10-18 21:23:11.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/input_to.h>
  
          void input_to(string|closure fun)
          void input_to(string|closure fun, int flag, ...)
--- 1,5 ----
  SYNOPSIS
!         #include <input_to.h>
  
          void input_to(string|closure fun)
          void input_to(string|closure fun, int flag, ...)
***************
*** 88,94 ****
          The optional trailing args will be passed as second and
          subsequent args to the function fun.
  
! EXAMPLE
          void func() {
             ...
             input_to("enter_name", INPUT_PROMPT, "Please enter your name:");
--- 88,94 ----
          The optional trailing args will be passed as second and
          subsequent args to the function fun.
  
! EXAMPLES
          void func() {
             ...
             input_to("enter_name", INPUT_PROMPT, "Please enter your name:");
***************
*** 123,129 ****
          input will go to enter_lastname().
  
  
!         Note that the list of input_tos is treated as a flat list:
  
          void func() {
            ..
--- 123,129 ----
          input will go to enter_lastname().
  
  
!         Note that the list of input_to-s is treated as a flat list:
  
          void func() {
            ..
diff -c efun.orig/input_to_info efun/input_to_info
*** efun.orig/input_to_info	2009-10-09 16:04:55.000000000 +0000
--- efun/input_to_info	2009-10-19 16:21:53.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed * input_to_info (object player)
  
  DESCRIPTION
          Construct an array of all input_to's pending for this interactive
--- 1,5 ----
  SYNOPSIS
!         mixed * input_to_info(object player)
  
  DESCRIPTION
          Construct an array of all input_to's pending for this interactive
***************
*** 7,15 ****
          input_to, the last element the most recently added one.
  
          Every item in the array is itself an array of 2 or more entries:
!          0:   The object (only if the function is a string).
!          1:   The function (string or closure).
!          2..: The argument(s).
  
  HISTORY
          Introduced in LDMud 3.2.9.
--- 7,15 ----
          input_to, the last element the most recently added one.
  
          Every item in the array is itself an array of 2 or more entries:
!           0:   The object (only if the function is a string).
!           1:   The function (string or closure).
!           2..: The argument(s).
  
  HISTORY
          Introduced in LDMud 3.2.9.
diff -c efun.orig/insert_alist efun/insert_alist
*** efun.orig/insert_alist	2009-10-09 16:04:55.000000000 +0000
--- efun/insert_alist	2009-10-19 16:21:58.000000000 +0000
***************
*** 1,7 ****
  OPTIONAL
  SYNOPSIS
!         mixed* insert_alist (mixed key, mixed data..., mixed * alist)
!         int    insert_alist (mixed key, mixed * keys)
  
  DESCRIPTION
          1. Form: Alist Insertion
--- 1,7 ----
  OPTIONAL
  SYNOPSIS
!         mixed * insert_alist(mixed key, mixed data..., mixed * alist)
!         int     insert_alist(mixed key, mixed * keys)
  
  DESCRIPTION
          1. Form: Alist Insertion
diff -c efun.orig/interactive efun/interactive
*** efun.orig/interactive	2009-10-09 16:04:55.000000000 +0000
--- efun/interactive	2009-10-19 18:51:30.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
          int interactive(object ob)
  
  DESCRIPTION
!         Return non-zero if ob, or when the argument is omitted, this
!         object(), is an interactive user. Will return 1 if the
          object is interactive, else 0.
  
  SEE ALSO
--- 1,10 ----
  SYNOPSIS
+         int interactive()
          int interactive(object ob)
  
  DESCRIPTION
!         Return non-zero if ob is an interactive user. If ob is omitted,
!         this_object() will be used. The return value is 1 if the
          object is interactive, else 0.
  
  SEE ALSO
diff -c efun.orig/intersect_alist efun/intersect_alist
*** efun.orig/intersect_alist	2009-10-09 16:04:55.000000000 +0000
--- efun/intersect_alist	2009-10-19 16:22:00.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         mixed * intersect_alist (mixed * list1, mixed * list2)
  
  DESCRIPTION
          Does a fast set intersection on alist key vectors (NOT on full alists!).
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         mixed * intersect_alist(mixed * list1, mixed * list2)
  
  DESCRIPTION
          Does a fast set intersection on alist key vectors (NOT on full alists!).
***************
*** 9,15 ****
          The function is available only if the driver is compiled with
          alist support. In that case, __ALISTS__ is defined.
  
! EXAMPLE
          new_list = intersect_alist(list1, list2);
  
  HISTORY
--- 9,15 ----
          The function is available only if the driver is compiled with
          alist support. In that case, __ALISTS__ is defined.
  
! EXAMPLES
          new_list = intersect_alist(list1, list2);
  
  HISTORY
diff -c efun.orig/invert_bits efun/invert_bits
*** efun.orig/invert_bits	2009-10-09 16:04:55.000000000 +0000
--- efun/invert_bits	2009-10-19 16:22:03.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string invert_bits (string str)
  
  DESCRIPTION
          Invert the status of all bits in bitstring <str> and return the
--- 1,5 ----
  SYNOPSIS
!         string invert_bits(string str)
  
  DESCRIPTION
          Invert the status of all bits in bitstring <str> and return the
diff -c efun.orig/lambda efun/lambda
*** efun.orig/lambda	2009-10-09 16:04:55.000000000 +0000
--- efun/lambda	2009-10-18 21:23:30.000000000 +0000
***************
*** 11,17 ****
          or apply().
  
  HISTORY
!         Introduced in 3.2@70
  
  SEE ALSO
          closures(LPC), unbound_lambda(E), apply(E), funcall(E),
--- 11,17 ----
          or apply().
  
  HISTORY
!         Introduced in 3.2@70.
  
  SEE ALSO
          closures(LPC), unbound_lambda(E), apply(E), funcall(E),
diff -c efun.orig/last_bit efun/last_bit
*** efun.orig/last_bit	2009-10-09 16:04:55.000000000 +0000
--- efun/last_bit	2009-10-19 16:22:06.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int last_bit (string str)
  
  DESCRIPTION
          Return the number of the last set bit in bitstring <str>.
--- 1,5 ----
  SYNOPSIS
!         int last_bit(string str)
  
  DESCRIPTION
          Return the number of the last set bit in bitstring <str>.
diff -c efun.orig/last_instructions efun/last_instructions
*** efun.orig/last_instructions	2009-10-09 16:04:55.000000000 +0000
--- efun/last_instructions	2009-10-18 21:24:00.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         string *last_instructions (int length, int verbose)
  
  DESCRIPTION
! 
!         Return an array showing the 'length' last executed
          instructions in disassembled form. If 'verbose' is non-zero
          (the default), line number information are also included.
          Each string is built as this:
--- 1,8 ----
  SYNOPSIS
!         string * last_instructions(int length, int verbose)
  
  DESCRIPTION
!         Returns an array showing the 'length' last executed
          instructions in disassembled form. If 'verbose' is non-zero
          (the default), line number information are also included.
          Each string is built as this:
***************
*** 24,30 ****
          There is a preconfigured upper limit for the backtrace.
  
  HISTORY
!         Introduced in 3.2.1@34
          The absolute stack depth information was added in LDMud 3.2.8.
  
  SEE ALSO
--- 23,29 ----
          There is a preconfigured upper limit for the backtrace.
  
  HISTORY
!         Introduced in 3.2.1@34.
          The absolute stack depth information was added in LDMud 3.2.8.
  
  SEE ALSO
diff -c efun.orig/limited efun/limited
*** efun.orig/limited	2009-10-09 16:04:55.000000000 +0000
--- efun/limited	2009-10-19 19:41:29.000000000 +0000
***************
*** 1,9 ****
  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...] )
  
  DESCRIPTION
          Call the function <fun> with any given <args> as parameters,
--- 1,10 ----
  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)
  
  DESCRIPTION
          Call the function <fun> with any given <args> as parameters,
***************
*** 30,35 ****
--- 31,37 ----
          The efun causes a privilege violation ("limited", current_object,
          fun, limits-array).
  
+ 
  EXAMPLES
          limited(#'function)
            --> executes function with no limits at all
diff -c efun.orig/living efun/living
*** efun.orig/living	2009-10-09 16:04:55.000000000 +0000
--- efun/living	2009-10-15 21:22:43.000000000 +0000
***************
*** 6,12 ****
          enable_commands() has been called from inside the ob).
          ob may be 0.
  
! EXAMPLE
          living(this_player())
  
  SEE ALSO
--- 6,12 ----
          enable_commands() has been called from inside the ob).
          ob may be 0.
  
! EXAMPLES
          living(this_player())
  
  SEE ALSO
diff -c efun.orig/load_name efun/load_name
*** efun.orig/load_name	2009-10-09 16:04:55.000000000 +0000
--- efun/load_name	2009-10-15 21:22:46.000000000 +0000
***************
*** 27,33 ****
          The returned name starts with a '/', unless the driver is running
          in COMPAT mode.
  
! EXAMPLE
          object o;
          o = clone_object("/std/thing");
          write(load_name(o));  --> writes "/std/thing" in !compat mode
--- 27,33 ----
          The returned name starts with a '/', unless the driver is running
          in COMPAT mode.
  
! EXAMPLES
          object o;
          o = clone_object("/std/thing");
          write(load_name(o));  --> writes "/std/thing" in !compat mode
diff -c efun.orig/load_object efun/load_object
*** efun.orig/load_object	2009-10-09 16:04:55.000000000 +0000
--- efun/load_object	2009-10-15 21:22:49.000000000 +0000
***************
*** 11,17 ****
          If strict euids are enforced, the cloning object must have
          a non-zero euid.
  
! EXAMPLE
          // Update and reload the standard player object
          destruct(find_object("/std/player"));
          load_object("/std/player");
--- 11,17 ----
          If strict euids are enforced, the cloning object must have
          a non-zero euid.
  
! EXAMPLES
          // Update and reload the standard player object
          destruct(find_object("/std/player"));
          load_object("/std/player");
diff -c efun.orig/localtime efun/localtime
*** efun.orig/localtime	2009-10-09 16:04:55.000000000 +0000
--- efun/localtime	2009-10-19 16:22:24.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         #include <sys/time.h>
  
          int * localtime(int clock)
!         int * localtime(int* uclock)
  
  DESCRIPTION
          Interpret the argument clock as number of seconds since Jan,
--- 1,8 ----
  SYNOPSIS
!         #include <time.h>
  
          int * localtime(int clock)
!         int * localtime(int *uclock)
  
  DESCRIPTION
          Interpret the argument clock as number of seconds since Jan,
***************
*** 25,39 ****
            int TM_YDAY  (7) : Day of the year (0..365)
            int TM_ISDST (8) : TRUE: Daylight saving time
  
- EXAMPLES
  
!         printf("Today is %s\n"
!               , ({ "Sunday", "Monday", "Tuesday", "Wednesday"
!                  , "Thursday", "Friday", "Saturday"
!                 })[localtime()[TM_WDAY]]);
  
  HISTORY
!         Introduced in LDMud 3.2.9
  
  SEE ALSO
          ctime(E), gmtime(E), time(E), utime(E)
--- 25,38 ----
            int TM_YDAY  (7) : Day of the year (0..365)
            int TM_ISDST (8) : TRUE: Daylight saving time
  
  
! EXAMPLES
!         printf("Today is %s\n",
!                ({ "Sunday", "Monday", "Tuesday", "Wednesday",
!                   "Thursday", "Friday", "Saturday" })[localtime()[TM_WDAY]]);
  
  HISTORY
!         Introduced in LDMud 3.2.9.
  
  SEE ALSO
          ctime(E), gmtime(E), time(E), utime(E)
diff -c efun.orig/m_add efun/m_add
*** efun.orig/m_add	2009-10-09 16:04:55.000000000 +0000
--- efun/m_add	2009-10-19 16:22:35.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mapping m_add (mapping map, mixed key, [mixed data...])
  
  DESCRIPTION
          Add (or replace) an entry with index <key> in mapping <map>.
--- 1,5 ----
  SYNOPSIS
!         mapping m_add(mapping map, mixed key, [mixed data...])
  
  DESCRIPTION
          Add (or replace) an entry with index <key> in mapping <map>.
***************
*** 27,33 ****
          m_add(m, "baz", ({ 4, 5 })... )
            --> ([ "foo":1;2, "bar":1;0, "baz":4;5 ])
  
- 
  HISTORY
          Introduced in LDMud 3.2.9.
  
--- 27,32 ----
diff -c efun.orig/make_shared_string efun/make_shared_string
*** efun.orig/make_shared_string	2009-10-09 16:04:55.000000000 +0000
--- efun/make_shared_string	2009-10-19 16:22:41.000000000 +0000
***************
*** 1,6 ****
  DEPRECATED
  SYNOPSIS
!         string make_shared_string (string str)
  
  DESCRIPTION
          Puts <str> in the table of shared strings of the game.
--- 1,6 ----
  DEPRECATED
  SYNOPSIS
!         string make_shared_string(string str)
  
  DESCRIPTION
          Puts <str> in the table of shared strings of the game.
***************
*** 14,18 ****
          converts untabled strings into tabled strings after some time.
  
  HISTORY
!         Introduced in LDMud 3.2.6; following a suggestion from TubMud.
!         Deprecated in LDMud 3.3.531 .
--- 14,18 ----
          converts untabled strings into tabled strings after some time.
  
  HISTORY
!         Introduced in LDMud 3.2.6; following a suggestion from Tubmud.
!         Deprecated in LDMud 3.3.531.
diff -c efun.orig/m_allocate efun/m_allocate
*** efun.orig/m_allocate	2009-10-09 16:04:55.000000000 +0000
--- efun/m_allocate	2009-10-19 16:23:40.000000000 +0000
***************
*** 1,10 ****
  SYNOPSIS
          mapping m_allocate(int size, int width)
  
  DESCRIPTION
          Reserve memory for a mapping.
  
!         size is the number of entries (i.e. keys) to reserve, width is
          the number of data items per entry. If the optional width is
          omitted, 1 is used as default.
  
--- 1,11 ----
  SYNOPSIS
+         mapping m_allocate(int size)
          mapping m_allocate(int size, int width)
  
  DESCRIPTION
          Reserve memory for a mapping.
  
!         <size> is the number of entries (i.e. keys) to reserve, <width> is
          the number of data items per entry. If the optional width is
          omitted, 1 is used as default.
  
***************
*** 27,39 ****
  
  EXAMPLES
          m_allocate(3, 7) -> mapping with 7 values per key, and with space
!            for 3 entries.
  
          ([:2*3 ]) -> same as m_allocate(0, 6)
  
  HISTORY
          Renamed from 'allocate_mapping' in LDMud 3.2.6.
!         The ([:width ]) notation introduced in LDMud 3.2.9 / 3.3.208.
  
  SEE ALSO
          mappings(LPC), walk_mapping(E), get_type_info(E), m_reallocate(E)
--- 28,40 ----
  
  EXAMPLES
          m_allocate(3, 7) -> mapping with 7 values per key, and with space
!         for 3 entries.
  
          ([:2*3 ]) -> same as m_allocate(0, 6)
  
  HISTORY
          Renamed from 'allocate_mapping' in LDMud 3.2.6.
!         The ([:width ]) notation was introduced in LDMud 3.2.9 / 3.3.208.
  
  SEE ALSO
          mappings(LPC), walk_mapping(E), get_type_info(E), m_reallocate(E)
diff -c efun.orig/map efun/map
*** efun.orig/map	2009-10-09 16:04:55.000000000 +0000
--- efun/map	2009-10-18 21:24:16.000000000 +0000
***************
*** 15,21 ****
          string map(string arg, closure cl, mixed extra...)
          string map(string arg, mapping m [, int idx])
  
- 
  DESCRIPTION
          Call the function <ob>-><func>() resp. the closure <cl> for every
          element of the string, array, struct or mapping <arg>, and return a
--- 15,20 ----
diff -c efun.orig/map_indices efun/map_indices
*** efun.orig/map_indices	2009-10-09 16:04:55.000000000 +0000
--- efun/map_indices	2009-10-15 21:22:52.000000000 +0000
***************
*** 19,25 ****
          Also note that the behaviour of this function is different from
          map(<array>).
  
! EXAMPLE
          m = mkmapping(users());
          m = map_indices(m, #'environment);
  
--- 19,25 ----
          Also note that the behaviour of this function is different from
          map(<array>).
  
! EXAMPLES
          m = mkmapping(users());
          m = map_indices(m, #'environment);
  
diff -c efun.orig/map_objects efun/map_objects
*** efun.orig/map_objects	2009-10-09 16:04:55.000000000 +0000
--- efun/map_objects	2009-10-18 21:24:21.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed *map_objects(object *arr, string fun, mixed extra, ...)
  
  DESCRIPTION
          Similar to map_array(), but calls arr[n]->fun(extra,...). The
--- 1,5 ----
  SYNOPSIS
!         mixed * map_objects(object *arr, string fun, mixed extra, ...)
  
  DESCRIPTION
          Similar to map_array(), but calls arr[n]->fun(extra,...). The
diff -c efun.orig/master efun/master
*** efun.orig/master	2009-10-09 16:04:55.000000000 +0000
--- efun/master	2009-10-19 16:23:57.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         object master ()
!         object master (int dont_load)
  
  DESCRIPTION
!         Return the master object.
          
          If <dont_load> is false, the function first makes sure that
          the master object exists.
--- 1,9 ----
  SYNOPSIS
!         object master()
!         object master(int dont_load)
  
  DESCRIPTION
!         Returns the master object.
          
          If <dont_load> is false, the function first makes sure that
          the master object exists.
diff -c efun.orig/match_command efun/match_command
*** efun.orig/match_command	2009-10-09 16:04:55.000000000 +0000
--- efun/match_command	2009-10-19 16:24:09.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/commands.h>
  
!         mixed * match_command (string command, object origin)
  
  DESCRIPTION
          Take the command <command>, parse it, and return an array of all
--- 1,7 ----
  SYNOPSIS
!         #include <commands.h>
  
!         mixed * match_command(string command, object origin)
  
  DESCRIPTION
          Take the command <command>, parse it, and return an array of all
diff -c efun.orig/max efun/max
*** efun.orig/max	2009-10-09 16:04:55.000000000 +0000
--- efun/max	2009-10-19 16:24:30.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         string    max (string arg, ...)
!         string    max (string * arg_array)
  
!         int|float max (int|float arg, ...)
!         int|float max (int|float * arg_array)
  
  DESCRIPTION
          Determaxe the maximum value of the <arg>uments and return it.
--- 1,9 ----
  SYNOPSIS
!         string    max(string arg, ...)
!         string    max(string *arg_array)
  
!         int|float max(int|float arg, ...)
!         int|float max(int|float *arg_array)
  
  DESCRIPTION
          Determaxe the maximum value of the <arg>uments and return it.
diff -c efun.orig/md5 efun/md5
*** efun.orig/md5	2009-10-09 16:04:55.000000000 +0000
--- efun/md5	2009-10-19 16:25:07.000000000 +0000
***************
*** 1,7 ****
  OBSOLETE
  SYNOPSIS
!         string md5 (string arg [ , int iterations ] )
!         string md5 (int *  arg [ , int iterations ] )
  
  DESCRIPTION
          Create and return a MD5 message digest from <arg>.
--- 1,7 ----
  OBSOLETE
  SYNOPSIS
!         string md5(string arg [, int iterations])
!         string md5(int *  arg [, int iterations])
  
  DESCRIPTION
          Create and return a MD5 message digest from <arg>.
***************
*** 22,28 ****
          s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
  
  HISTORY
!         Introduced in LDMud 3.2.9
          LDMud 3.2.12 added number arrays as argument, and the number of
          interations.
          LDMud 3.3.717 added the iteration-based evaluation cost.
--- 22,28 ----
          s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
  
  HISTORY
!         Introduced in LDMud 3.2.9.
          LDMud 3.2.12 added number arrays as argument, and the number of
          interations.
          LDMud 3.3.717 added the iteration-based evaluation cost.
diff -c efun.orig/m_entry efun/m_entry
*** efun.orig/m_entry	2009-10-09 16:04:55.000000000 +0000
--- efun/m_entry	2009-10-19 16:25:12.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed *  m_entry (mapping map, mixed key)
  
  DESCRIPTION
          Query the mapping <map> for the entry for <key> and return all
--- 1,5 ----
  SYNOPSIS
!         mixed * m_entry(mapping map, mixed key)
  
  DESCRIPTION
          Query the mapping <map> for the entry for <key> and return all
***************
*** 10,16 ****
          Note: the efun m_add() can be used to add all values for an entry
          at once.
  
! EXAMPLE
          mapping m = ([ 1:"foo":-1, 2:"bar":-2 ]);
  
          m_entry(m, 0) -> 0
--- 10,16 ----
          Note: the efun m_add() can be used to add all values for an entry
          at once.
  
! EXAMPLES
          mapping m = ([ 1:"foo":-1, 2:"bar":-2 ]);
  
          m_entry(m, 0) -> 0
diff -c efun.orig/min efun/min
*** efun.orig/min	2009-10-09 16:04:55.000000000 +0000
--- efun/min	2009-10-19 16:25:23.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         string    min (string arg, ...)
!         string    min (string * arg_array)
  
!         int|float min (int|float arg, ...)
!         int|float min (int|float * arg_array)
  
  DESCRIPTION
          Determine the minimum value of the <arg>uments and return it.
--- 1,9 ----
  SYNOPSIS
!         string    min(string arg, ...)
!         string    min(string *arg_array)
  
!         int|float min(int|float arg, ...)
!         int|float min(int|float *arg_array)
  
  DESCRIPTION
          Determine the minimum value of the <arg>uments and return it.
diff -c efun.orig/m_indices efun/m_indices
*** efun.orig/m_indices	2009-10-09 16:04:55.000000000 +0000
--- efun/m_indices	2009-10-18 21:24:32.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed *m_indices(mapping map)
  
  DESCRIPTION
          Returns an array containing the indices of mapping 'map'.
--- 1,5 ----
  SYNOPSIS
!         mixed * m_indices(mapping map)
  
  DESCRIPTION
          Returns an array containing the indices of mapping 'map'.
diff -c efun.orig/mkmapping efun/mkmapping
*** efun.orig/mkmapping	2009-10-09 16:04:55.000000000 +0000
--- efun/mkmapping	2009-10-15 21:22:57.000000000 +0000
***************
*** 18,24 ****
          unused allocated space will be freed after the current function
          returns.
  
! EXAMPLE
          mkmapping( ({ 1, 2 }), ({ 10, 11 }), ({ 20, 21, 22}))
            returns ([ 1:10;20, 2:11;21 ])
  
--- 18,24 ----
          unused allocated space will be freed after the current function
          returns.
  
! EXAMPLES
          mkmapping( ({ 1, 2 }), ({ 10, 11 }), ({ 20, 21, 22}))
            returns ([ 1:10;20, 2:11;21 ])
  
diff -c efun.orig/mktime efun/mktime
*** efun.orig/mktime	2009-10-09 16:04:55.000000000 +0000
--- efun/mktime	2009-10-19 20:23:53.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         #include <sys/time.h>
  
!         int mktime(int *ts);
  
! BESCHREIBUNG
          If the argument <ts> is an array with 9 elements (int) according to
          the result of local_time()/gm_time(), this function returns the number
          of seconds passed since the epoch (00:00:00 UTC, January 1, 1970).
--- 1,9 ----
  SYNOPSIS
!         #include <time.h>
  
!         int mktime(int *ts)
  
! DESCRIPTION
          If the argument <ts> is an array with 9 elements (int) according to
          the result of local_time()/gm_time(), this function returns the number
          of seconds passed since the epoch (00:00:00 UTC, January 1, 1970).
***************
*** 21,36 ****
              int TM_YDAY   (7):  day of year (0..365)
              inz TM_ISDST  (8):  TRUE: summer time is in effect.
  
!       TM_YDAY and TM_WDAY are ignored and can contain arbitrary integer
!       values.
  
! BEISPIEL
!       A date and time (user input) shall be stored as unix timestamp:
!       // "Wed Oct 24 10:48:00 2007" corresponds to the returned time stamp:
!       int unixtime = mktime( ({0, 48, 09, 24, 09, 2007, 0, 01, 0}) );
        
! AENDERUNGEN
!         Introduced in LDMud 3.3.718
  
! SIEHE AUCH
!     ctime(E), gmtime(E), local_time(E), time(E), utime(E)
--- 21,36 ----
              int TM_YDAY   (7):  day of year (0..365)
              inz TM_ISDST  (8):  TRUE: summer time is in effect.
  
!         TM_YDAY and TM_WDAY are ignored and can contain arbitrary 
!         integer values.
  
! EXAMPLES
!         A date and time (user input) shall be stored as unix timestamp:
!         // "Wed Oct 24 10:48:00 2007" corresponds to the returned time stamp:
!         int unixtime = mktime( ({0, 48, 09, 24, 09, 2007, 0, 01, 0}) );
        
! HISTORY
!         Introduced in LDMud 3.3.718.
  
! SEE ALSO
!         ctime(E), gmtime(E), local_time(E), time(E), utime(E)
diff -c efun.orig/m_reallocate efun/m_reallocate
*** efun.orig/m_reallocate	2009-10-09 16:04:55.000000000 +0000
--- efun/m_reallocate	2009-10-18 21:43:18.000000000 +0000
***************
*** 9,22 ****
  
          The mapping <m> is not changed.
  
! EXAMPLE
          mapping m = ([ "foo":1;2;3, "bar":4;5;6 ])
  
          m_reallocate(m, 1) --> returns ([ "foo":1,       "bar:4 ])
          m_reallocate(m, 4) --> returns ([ "foo":1;2;3;0, "bar:4;5;6;0 ])
  
  HISTORY
!         Introduced in LDMud 3.2.6, suggested by TubMud.
  
  SEE ALSO
          m_allocate(E), m_values(E), widthof(E)
--- 9,22 ----
  
          The mapping <m> is not changed.
  
! EXAMPLES
          mapping m = ([ "foo":1;2;3, "bar":4;5;6 ])
  
          m_reallocate(m, 1) --> returns ([ "foo":1,       "bar:4 ])
          m_reallocate(m, 4) --> returns ([ "foo":1;2;3;0, "bar:4;5;6;0 ])
  
  HISTORY
!         Introduced in LDMud 3.2.6, suggested by Tubmud.
  
  SEE ALSO
          m_allocate(E), m_values(E), widthof(E)
diff -c efun.orig/m_values efun/m_values
*** efun.orig/m_values	2009-10-09 16:04:55.000000000 +0000
--- efun/m_values	2009-10-18 21:25:04.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         mixed *m_values(mapping map)
!         mixed *m_values(mapping map, int index)
  
  DESCRIPTION
          Returns an array with the values of mapping 'map'.
--- 1,6 ----
  SYNOPSIS
!         mixed * m_values(mapping map)
!         mixed * m_values(mapping map, int index)
  
  DESCRIPTION
          Returns an array with the values of mapping 'map'.
diff -c efun.orig/object_info efun/object_info
*** efun.orig/object_info	2009-10-09 16:04:55.000000000 +0000
--- efun/object_info	2009-10-19 16:25:52.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         #include <sys/objectinfo.h>
  
!         mixed * object_info (object ob, int what)
!         mixed * object_info (object ob, int what, int index)
  
  DESCRIPTION
          Returns some internal information about object <ob>, collected
--- 1,8 ----
  SYNOPSIS
!         #include <objectinfo.h>
  
!         mixed * object_info(object ob, int what)
!         mixed * object_info(object ob, int what, int index)
  
  DESCRIPTION
          Returns some internal information about object <ob>, collected
diff -c efun.orig/or_bits efun/or_bits
*** efun.orig/or_bits	2009-10-09 16:04:55.000000000 +0000
--- efun/or_bits	2009-10-19 20:49:17.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         string or_bits (string str1, string str2)
  
! DESTRIPTION
          <str1> and <str2> are both bitstrings. The result of the function
          is a bitstring with the binary-or of <str1> and <str2>,
          ie. a string in which a bit is set if the corresponding
--- 1,7 ----
  SYNOPSIS
!         string or_bits(string str1, string str2)
  
! DESCRIPTION
          <str1> and <str2> are both bitstrings. The result of the function
          is a bitstring with the binary-or of <str1> and <str2>,
          ie. a string in which a bit is set if the corresponding
diff -c efun.orig/order_alist efun/order_alist
*** efun.orig/order_alist	2009-10-09 16:04:55.000000000 +0000
--- efun/order_alist	2009-10-18 20:57:48.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed *order_alist(mixed *keys, mixed *|void data, ...)
  
  DESCRIPTION
          Creates an alist.
--- 1,6 ----
+ OPTIONAL
  SYNOPSIS
!         mixed * order_alist(mixed *keys, mixed *|void data, ...)
  
  DESCRIPTION
          Creates an alist.
diff -c efun.orig/parse_command efun/parse_command
*** efun.orig/parse_command	2009-10-09 16:04:55.000000000 +0000
--- efun/parse_command	2009-10-18 20:59:58.000000000 +0000
***************
*** 1,7 ****
  OPTIONAL
  SYNOPSIS
!         int parse_command (string cmd, object  env, string fmt, mixed &var, ...)
!         int parse_command (string cmd, object* arr, string fmt, mixed &var, ...)
  
  DESCRIPTION
          parse_command() is basically a spiffed up sscanf operating
--- 1,7 ----
  OPTIONAL
  SYNOPSIS
!         int parse_command(string cmd, object  env, string fmt, mixed &var, ...)
!         int parse_command(string cmd, object *arr, string fmt, mixed &var, ...)
  
  DESCRIPTION
          parse_command() is basically a spiffed up sscanf operating
***************
*** 120,129 ****
          int parse_command(string, object|object*, string, destargs...)
  
  
! EXAMPLE
          object *items;
!         parse_command( "take apple",environment(this_player())
!                      , " 'get' / 'take' %i ",items);
  
  HISTORY
          LDMud 3.3.258 removed the compat-mode parse_command().
--- 120,129 ----
          int parse_command(string, object|object*, string, destargs...)
  
  
! EXAMPLES
          object *items;
!         parse_command("take apple",environment(this_player()),
!                       " 'get' / 'take' %i ", items);
  
  HISTORY
          LDMud 3.3.258 removed the compat-mode parse_command().
diff -c efun.orig/pg_connect efun/pg_connect
*** efun.orig/pg_connect	2009-10-09 16:04:55.000000000 +0000
--- efun/pg_connect	2009-10-19 16:26:40.000000000 +0000
***************
*** 1,8 ****
  OPTIONAL
  SYNOPSIS
!         int pg_connect (string conn, string fun)
!         int pg_connect (string conn, string fun, string|object obj, mixed extra, ...)
!         int pg_connect (string conn, closure cl, mixed extra, ...)
  
  DESCRIPTION
          Open a database connection as directed by <conn>, and assign the
--- 1,9 ----
  OPTIONAL
  SYNOPSIS
!         int pg_connect(string conn, string fun)
!         int pg_connect(string conn, string fun, string|object obj,
!                        mixed extra, ...)
!         int pg_connect(string conn, closure cl, mixed extra, ...)
  
  DESCRIPTION
          Open a database connection as directed by <conn>, and assign the
diff -c efun.orig/pg_pending efun/pg_pending
*** efun.orig/pg_pending	2009-10-09 16:04:55.000000000 +0000
--- efun/pg_pending	2009-10-19 16:26:50.000000000 +0000
***************
*** 1,7 ****
  OPTIONAL
  SYNOPSIS
!         int pg_pending ()
!         int pg_pending (object obj)
  
  DESCRIPTION
          Return the number of pending queries for the connection on the given
--- 1,7 ----
  OPTIONAL
  SYNOPSIS
!         int pg_pending()
!         int pg_pending(object obj)
  
  DESCRIPTION
          Return the number of pending queries for the connection on the given
diff -c efun.orig/pow efun/pow
*** efun.orig/pow	2009-10-09 16:04:55.000000000 +0000
--- efun/pow	2009-10-19 16:27:02.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         float pow (int|float base, int|float exp)
  
  DESCRIPTION
          The function returns the value of <base> raised to the power of <exp>.
  
  EXAMPLES
!         pow(-2, 3)   - returns -8.0
          pow(8, 1.0/3.0)  - returns 2.0
  
  HISTORY
--- 1,11 ----
  SYNOPSIS
!         float pow(int|float base, int|float exp)
  
  DESCRIPTION
          The function returns the value of <base> raised to the power of <exp>.
  
  EXAMPLES
!         pow(-2, 3)       - returns -8.0
          pow(8, 1.0/3.0)  - returns 2.0
  
  HISTORY
diff -c efun.orig/present efun/present
*** efun.orig/present	2009-10-09 16:04:55.000000000 +0000
--- efun/present	2009-10-19 16:27:26.000000000 +0000
***************
*** 24,30 ****
          the efun searches just inside <env>.
  
          When searching both inventory and environment of this_object(),
!         the numbering is applied linear over both spaces (see example).
  
          The driver identifies objects by calling the lfun id() in each
          object.
--- 24,30 ----
          the efun searches just inside <env>.
  
          When searching both inventory and environment of this_object(),
!         the numbering is applied linear over both spaces (see examples).
  
          The driver identifies objects by calling the lfun id() in each
          object.
***************
*** 48,54 ****
          A typical 2.4.5-implementation of the "do <id> <n>" command style
          is:
  
!             void init () { add_action ("open_chest", "open"); }
  
              int open_chest (string str) {
                if (present (str) != this_object ())
--- 48,54 ----
          A typical 2.4.5-implementation of the "do <id> <n>" command style
          is:
  
!             void init() { add_action("open_chest", "open"); }
  
              int open_chest (string str) {
                if (present (str) != this_object ())
diff -c efun.orig/present_clone efun/present_clone
*** efun.orig/present_clone	2009-10-09 16:04:55.000000000 +0000
--- efun/present_clone	2009-10-19 20:23:57.000000000 +0000
***************
*** 1,11 ****
  PRELIMINARY
  SYNOPSIS
!         object present_clone(string str);
          object present_clone(string str, int n)
          object present_clone(string str, object env)
          object present_clone(string str, object env, int n)
  
!         object present_clone(object obj);
          object present_clone(object obj, int n)
          object present_clone(object obj, object env)
          object present_clone(object obj, object env, int n)
--- 1,11 ----
  PRELIMINARY
  SYNOPSIS
!         object present_clone(string str)
          object present_clone(string str, int n)
          object present_clone(string str, object env)
          object present_clone(string str, object env, int n)
  
!         object present_clone(object obj)
          object present_clone(object obj, int n)
          object present_clone(object obj, object env)
          object present_clone(object obj, object env, int n)
***************
*** 21,27 ****
          otherwise the first object matching <str> or <obj>.
          If no object in <env> matches the criteria, 0 is returned.
  
!         For plain driver this name starts with a '/', for compat-mode
          drivers it doesn't.
  
  EXAMPLES
--- 21,27 ----
          otherwise the first object matching <str> or <obj>.
          If no object in <env> matches the criteria, 0 is returned.
  
!         For plain driver this name starts with a '/', for COMPAT mode
          drivers it doesn't.
  
  EXAMPLES
***************
*** 39,53 ****
          | present_clone("/std/weapon#12", env, 3)          | 0             |
          +--------------------------------------------------+---------------+
  
-         For compat-mode drivers, remove the leading '/' from the given
-         names.
- 
  REMARKS
          Note that in contrast to present(), this efun never searches
          in the environment of <env>.
  
  HISTORY
!         Introduced in 3.2.7
          Searching for the <n>th object was added in 3.3.718.
  
  SEE ALSO
--- 39,50 ----
          | present_clone("/std/weapon#12", env, 3)          | 0             |
          +--------------------------------------------------+---------------+
  
  REMARKS
          Note that in contrast to present(), this efun never searches
          in the environment of <env>.
  
  HISTORY
!         Introduced in 3.2.7.
          Searching for the <n>th object was added in 3.3.718.
  
  SEE ALSO
diff -c efun.orig/previous_object efun/previous_object
*** efun.orig/previous_object	2009-10-09 16:04:55.000000000 +0000
--- efun/previous_object	2009-10-15 21:24:13.000000000 +0000
***************
*** 17,35 ****
          added by add_action), previous_object() will return this_object(),
          but previous_object(0) will return 0.
  
! EXAMPLE
          int security() {
             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 highly_sensible_func() {
!            if(!security())
!               return;
!            ...
          }
  
          This example shows how we can check if the last call to a
--- 17,35 ----
          added by add_action), previous_object() will return this_object(),
          but previous_object(0) will return 0.
  
! EXAMPLES
          int security() {
             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 highly_sensible_func() {
!             if (!security())
!                 return;
!             ...
          }
  
          This example shows how we can check if the last call to a
diff -c efun.orig/process_string efun/process_string
*** efun.orig/process_string	2009-10-09 16:04:55.000000000 +0000
--- efun/process_string	2009-10-15 21:24:21.000000000 +0000
***************
*** 23,29 ****
  
            @@function1@@function2@@
  
! EXAMPLE
          string foo(string str) {
             return "ab"+str+"ef";
          }
--- 23,29 ----
  
            @@function1@@function2@@
  
! EXAMPLES
          string foo(string str) {
             return "ab"+str+"ef";
          }
diff -c efun.orig/program_name efun/program_name
*** efun.orig/program_name	2009-10-09 16:04:55.000000000 +0000
--- efun/program_name	2009-10-15 21:24:48.000000000 +0000
***************
*** 18,24 ****
  
          CAVEAT: This efun swaps in the program if it is swapped out.
  
! EXAMPLE
          object o;
          o = clone_object("/std/thing");
          write(program_name(o));  --> writes "/std/thing.c" in !compat mode
--- 18,24 ----
  
          CAVEAT: This efun swaps in the program if it is swapped out.
  
! EXAMPLES
          object o;
          o = clone_object("/std/thing");
          write(program_name(o));  --> writes "/std/thing.c" in !compat mode
diff -c efun.orig/query_actions efun/query_actions
*** efun.orig/query_actions	2009-10-09 16:04:55.000000000 +0000
--- efun/query_actions	2009-10-19 20:54:47.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/commands.h>
  
!         mixed *query_actions(object ob, mixed mask_or_verb)
  
  DESCRIPTION
          query_actions takes either an object or a filename as first
--- 1,8 ----
  SYNOPSIS
!         #include <commands.h>
!         #include <sent.h>
  
!         mixed * query_actions(object ob, mixed mask_or_verb)
  
  DESCRIPTION
          query_actions takes either an object or a filename as first
***************
*** 18,24 ****
              QA_OBJECT     ( 8):  object
              QA_FUNCTION   (16): function
  
!         "type" is one of the values defined in <sent.h> (/sys/sent.h)
          (which is provided with the parser source).
  
          SENT_PLAIN        added with add_action (fun, cmd);
--- 19,25 ----
              QA_OBJECT     ( 8):  object
              QA_FUNCTION   (16): function
  
!         "type" is one of the values defined in <sent.h> 
          (which is provided with the parser source).
  
          SENT_PLAIN        added with add_action (fun, cmd);
diff -c efun.orig/query_command efun/query_command
*** efun.orig/query_command	2009-10-09 16:04:55.000000000 +0000
--- efun/query_command	2009-10-15 21:24:52.000000000 +0000
***************
*** 12,18 ****
          by a call_out or the heart beat.  Also when a user logs in
          query_command() returns 0.
  
! EXAMPLE
          void init() {
             ...
             add_action("sing","sing");
--- 12,18 ----
          by a call_out or the heart beat.  Also when a user logs in
          query_command() returns 0.
  
! EXAMPLES
          void init() {
             ...
             add_action("sing","sing");
diff -c efun.orig/query_limits efun/query_limits
*** efun.orig/query_limits	2009-10-09 16:04:55.000000000 +0000
--- efun/query_limits	2009-10-15 21:12:50.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/rtlimits.h>
  
          int * query_limits()
          int * query_limits(int default)
--- 1,5 ----
  SYNOPSIS
!         #include <rtlimits.h>
  
          int * query_limits()
          int * query_limits(int default)
diff -c efun.orig/query_mccp_stats efun/query_mccp_stats
*** efun.orig/query_mccp_stats	2009-10-09 16:04:55.000000000 +0000
--- efun/query_mccp_stats	2009-10-18 21:25:33.000000000 +0000
***************
*** 1,7 ****
  OPTIONAL
  SYNOPSIS
!         int *query_mccp_stats()
!         int *query_mccp_stats(object player)
  
  DESCRIPTION
          This efun gives you statistics about current compression
--- 1,7 ----
  OPTIONAL
  SYNOPSIS
!         int * query_mccp_stats()
!         int * query_mccp_stats(object player)
  
  DESCRIPTION
          This efun gives you statistics about current compression
diff -c efun.orig/query_verb efun/query_verb
*** efun.orig/query_verb	2009-10-09 16:04:55.000000000 +0000
--- efun/query_verb	2009-10-15 21:24:55.000000000 +0000
***************
*** 9,15 ****
          up to but not including the first space or lineend). If <flag> is
          non-0, the verb as specified in the add_action() statement is returned.
  
! EXAMPLE
          void init() {
             ...
             add_action("sing","sing");
--- 9,15 ----
          up to but not including the first space or lineend). If <flag> is
          non-0, the verb as specified in the add_action() statement is returned.
  
! EXAMPLES
          void init() {
             ...
             add_action("sing","sing");
diff -c efun.orig/regexp efun/regexp
*** efun.orig/regexp	2009-10-09 16:04:55.000000000 +0000
--- efun/regexp	2009-10-18 21:25:40.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
          #include <regexp.h>
  
!         string *regexp(string *list, string pattern)
!         string *regexp(string *list, string pattern, int opt)
  
  DESCRIPTION
          Match the pattern <pattern> (interpreted according to <opt> if
--- 1,8 ----
  SYNOPSIS
          #include <regexp.h>
  
!         string * regexp(string *list, string pattern)
!         string * regexp(string *list, string pattern, int opt)
  
  DESCRIPTION
          Match the pattern <pattern> (interpreted according to <opt> if
***************
*** 12,18 ****
          If there is an error in the regular expression, a runtime
          error will be raised.
  
! EXAMPLE
          string strs;
          string pattern;
          
--- 12,18 ----
          If there is an error in the regular expression, a runtime
          error will be raised.
  
! EXAMPLES
          string strs;
          string pattern;
          
***************
*** 21,32 ****
          else
              pattern = "\\bhelp\\b.*\\bme\\b";
  
!         if (strs = regexp( ({"please, help me Sir John."}),
!                          , pattern
!                          ))
!         {
!            if (sizeof(strs)
!               write("It matches.\n");
          }
  
          The regular expression will test the given string (which is
--- 21,29 ----
          else
              pattern = "\\bhelp\\b.*\\bme\\b";
  
!         if (strs = regexp(({"please, help me Sir John."}), pattern)) {
!             if (sizeof(strs)
!                 write("It matches.\n");
          }
  
          The regular expression will test the given string (which is
diff -c efun.orig/regexplode efun/regexplode
*** efun.orig/regexplode	2009-10-09 16:04:55.000000000 +0000
--- efun/regexplode	2009-10-19 16:29:30.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
          #include <regexp.h>
  
!         string *regexplode (string text, string pattern)
!         string *regexplode (string text, string pattern, int opt)
  
  DESCRIPTION
          This function is similar to explode but accepts a regular
--- 1,8 ----
  SYNOPSIS
          #include <regexp.h>
  
!         string * regexplode(string text, string pattern)
!         string * regexplode(string text, string pattern, int opt)
  
  DESCRIPTION
          This function is similar to explode but accepts a regular
***************
*** 19,25 ****
          regexplode("abcdef", "cde", RE_OMIT_DELIM) -> ({ "ab", "f" })
  
  HISTORY
!         Introduced in 3.2@61
          LDMud 3.3 added the optional <opt> argument and the RE_OMIT_DELIM
            flag.
  
--- 19,25 ----
          regexplode("abcdef", "cde", RE_OMIT_DELIM) -> ({ "ab", "f" })
  
  HISTORY
!         Introduced in 3.2@61.
          LDMud 3.3 added the optional <opt> argument and the RE_OMIT_DELIM
            flag.
  
diff -c efun.orig/regexp_package efun/regexp_package
*** efun.orig/regexp_package	2009-10-09 16:04:55.000000000 +0000
--- efun/regexp_package	2009-10-15 21:25:01.000000000 +0000
***************
*** 19,25 ****
          If there is an error in the regular expression, a runtime
          error will be raised.
  
! EXAMPLE
          string strs;
          string pattern;
          
--- 19,25 ----
          If there is an error in the regular expression, a runtime
          error will be raised.
  
! EXAMPLES
          string strs;
          string pattern;
          
***************
*** 28,39 ****
          else
              pattern = "\\bhelp\\b.*\\bme\\b";
  
!         if (strs = regexp( ({"please, help me Sir John."}),
!                          , pattern
!                          ))
!         {
!            if (sizeof(strs)
!               write("It matches.\n");
          }
  
          The regular expression will test the given string (which is
--- 28,36 ----
          else
              pattern = "\\bhelp\\b.*\\bme\\b";
  
!         if (strs = regexp(({"please, help me Sir John."}), pattern)) {
!             if (sizeof(strs)
!                 write("It matches.\n");
          }
  
          The regular expression will test the given string (which is
diff -c efun.orig/regmatch efun/regmatch
*** efun.orig/regmatch	2009-10-09 16:04:55.000000000 +0000
--- efun/regmatch	2009-10-18 21:26:14.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
          #include <regexp.h>
  
!         string  regmatch (string text, string pattern)
!         string  regmatch (string text, string pattern, int opt)
!         string  regmatch (string text, string pattern, int opt, int start)
!         string *regmatch (string text, string pattern, int opt)
!         string *regmatch (string text, string pattern, int opt, int start)
  
  DESCRIPTION
          Match the string <txt> against <pattern> (interpreted according
--- 1,11 ----
  SYNOPSIS
          #include <regexp.h>
  
!         string   regmatch(string text, string pattern)
!         string   regmatch(string text, string pattern, int opt)
!         string   regmatch(string text, string pattern, int opt, int start)
!         string * regmatch(string text, string pattern, int opt)
!         string * regmatch(string text, string pattern, int opt, int start)
  
  DESCRIPTION
          Match the string <txt> against <pattern> (interpreted according
***************
*** 30,36 ****
          new index is usually equal the length of the match, but at least one
          higher than the original start index.
  
! EXAMPLE
          regmatch("abcdefcdf", "cd")    -> "cd"
          regmatch("abcdefcdf", "cd(e)") -> "cde"
  
--- 30,37 ----
          new index is usually equal the length of the match, but at least one
          higher than the original start index.
  
! 
! EXAMPLES
          regmatch("abcdefcdf", "cd")    -> "cd"
          regmatch("abcdefcdf", "cd(e)") -> "cde"
  
diff -c efun.orig/regreplace efun/regreplace
*** efun.orig/regreplace	2009-10-09 16:04:55.000000000 +0000
--- efun/regreplace	2009-10-18 21:00:39.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
          #include <regexp.h>
  
!         string regreplace( string txt, string pattern
!                          , closure|string replacepattern, int flags)
  
  DESCRIPTION
          This function looks through txt looking for the regular
--- 1,8 ----
  SYNOPSIS
          #include <regexp.h>
  
!         string regreplace(string txt, string pattern,
!                           closure|string replacepattern, int flags)
  
  DESCRIPTION
          This function looks through txt looking for the regular
***************
*** 25,31 ****
          replacing variable strings (as opposed to regexplode, where
          you can explode by regular expression, but not implode...)
  
! EXAMPLE
          string msgin;
  
          /* Checks msgin for the string 'tells you: ' and all following
--- 25,32 ----
          replacing variable strings (as opposed to regexplode, where
          you can explode by regular expression, but not implode...)
  
! 
! EXAMPLES
          string msgin;
  
          /* Checks msgin for the string 'tells you: ' and all following
***************
*** 43,50 ****
          /* Put the word HOUSE into lower case. */
          txt = regreplace(txt, "HOUSE", #'lower_case, 1);
  
  HISTORY
!         Introduced in 3.2.1@125
          The use of a closure as replacepattern was introduced in
          LDMud 3.2.9.
  
--- 44,52 ----
          /* Put the word HOUSE into lower case. */
          txt = regreplace(txt, "HOUSE", #'lower_case, 1);
  
+ 
  HISTORY
!         Introduced in 3.2.1@125.
          The use of a closure as replacepattern was introduced in
          LDMud 3.2.9.
  
diff -c efun.orig/remove_action efun/remove_action
*** efun.orig/remove_action	2009-10-09 16:04:55.000000000 +0000
--- efun/remove_action	2009-10-19 16:29:57.000000000 +0000
***************
*** 12,18 ****
          Return the number of actions removed.
  
  HISTORY
!         Introduced in 3.2.1
          LDMud 3.2.10 added the ability to remove all actions.
  
  SEE ALSO
--- 12,18 ----
          Return the number of actions removed.
  
  HISTORY
!         Introduced in 3.2.1.
          LDMud 3.2.10 added the ability to remove all actions.
  
  SEE ALSO
diff -c efun.orig/remove_call_out efun/remove_call_out
*** efun.orig/remove_call_out	2009-10-09 16:04:55.000000000 +0000
--- efun/remove_call_out	2009-10-15 21:25:18.000000000 +0000
***************
*** 10,16 ****
          -1 is returned if there were no call-outs pending to this
          function.
  
! EXAMPLE
          To remove every pending call-out to MyTimer() :
  
          while (remove_call_out("MyTimer") != -1) /* continue */ ;
--- 10,16 ----
          -1 is returned if there were no call-outs pending to this
          function.
  
! EXAMPLES
          To remove every pending call-out to MyTimer() :
  
          while (remove_call_out("MyTimer") != -1) /* continue */ ;
diff -c efun.orig/remove_input_to efun/remove_input_to
*** efun.orig/remove_input_to	2009-10-09 16:04:55.000000000 +0000
--- efun/remove_input_to	2009-10-19 18:57:30.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 ob, string fun)
  
  DESCRIPTION
          Remove a pending input_to from the interactive <player> object.
--- 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 ob, string fun)
  
  DESCRIPTION
          Remove a pending input_to from the interactive <player> object.
***************
*** 13,33 ****
          If the optional <fun> is given, the efun tries to find and remove the
          most recently added input_to matching the <fun> argument:
           - <fun> is a string: the input_to functionname has to match
!          - <fun> is an object: the object the input_to function is bound to has
!                                to match
           - <fun> is a closure: the input_to closure has to match.
!          - <ob> and <fun> are given: both the object and the functionname have
!                                to match
  
!         Return 1 on success, or 0 on failure (no input_to found, object is not
!         interactive or has no input_to pending).
  
  EXAMPLES
!         // Remove all pending input_to from the current user, if any.
!         while (remove_input_to(this_interactive())) ;
  
  HISTORY
!         Introduced in LDMud 3.2.9 / 3.3.119 .
  
  SEE ALSO
          input_to(E), find_input_to(E), input_to_info(E), query_input_pending(E)
--- 13,33 ----
          If the optional <fun> is given, the efun tries to find and remove the
          most recently added input_to matching the <fun> argument:
           - <fun> is a string: the input_to functionname has to match
!          - <fun> is an object: the object the input_to function is bound to
!                                has to match
           - <fun> is a closure: the input_to closure has to match.
!          - <ob> and <fun> are given: both the object and the functionname
!                                have to match
  
!         Return 1 on success, or 0 on failure (no input_to found, object is
!         not interactive or has no input_to pending).
  
  EXAMPLES
!         Remove all pending input_to from the current user, if any.
!             while (remove_input_to(this_interactive())) ;
  
  HISTORY
!         Introduced in LDMud 3.2.9 / 3.3.119.
  
  SEE ALSO
          input_to(E), find_input_to(E), input_to_info(E), query_input_pending(E)
diff -c efun.orig/rename efun/rename
*** efun.orig/rename	2009-10-09 16:04:55.000000000 +0000
--- efun/rename	2009-10-15 21:25:37.000000000 +0000
***************
*** 19,25 ****
          On successfull completion rename() will return 0. If any error
          occurs, a non-zero value is returned.
  
! EXAMPLE
          rename("/players/wizard/obj.c", "/players/wizard/newobj.c");
  
  SEE ALSO
--- 19,25 ----
          On successfull completion rename() will return 0. If any error
          occurs, a non-zero value is returned.
  
! EXAMPLES
          rename("/players/wizard/obj.c", "/players/wizard/newobj.c");
  
  SEE ALSO
diff -c efun.orig/rename_object efun/rename_object
*** efun.orig/rename_object	2009-10-09 16:04:55.000000000 +0000
--- efun/rename_object	2009-10-19 20:24:01.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         void rename_object (object ob, string new_name);
  
  DESCRIPTION
          Give the object <ob> a new object name <new_name>. Causes a privilege
--- 1,5 ----
  SYNOPSIS
!         void rename_object(object ob, string new_name)
  
  DESCRIPTION
          Give the object <ob> a new object name <new_name>. Causes a privilege
diff -c efun.orig/restore_object efun/restore_object
*** efun.orig/restore_object	2009-10-09 16:04:55.000000000 +0000
--- efun/restore_object	2009-10-19 16:30:57.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int restore_object (string name)
!         int restore_object (string str)
  
  DESCRIPTION
          Restore values of variables for current object from the file <name>,
--- 1,6 ----
  SYNOPSIS
!         int restore_object(string name)
!         int restore_object(string str)
  
  DESCRIPTION
          Restore values of variables for current object from the file <name>,
diff -c efun.orig/restore_value efun/restore_value
*** efun.orig/restore_value	2009-10-09 16:04:55.000000000 +0000
--- efun/restore_value	2009-10-19 16:31:02.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed restore_value (string str)
  
  DESCRIPTION
          Decode the string representation <str> of a value back into the value
--- 1,5 ----
  SYNOPSIS
!         mixed restore_value(string str)
  
  DESCRIPTION
          Decode the string representation <str> of a value back into the value
diff -c efun.orig/reverse efun/reverse
*** efun.orig/reverse	2009-10-09 16:04:55.000000000 +0000
--- efun/reverse	2009-10-19 16:31:19.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         inti    reverse (int arg)
!         string  reverse (string arg)
!         mixed * reverse (mixed * arg)
!         mixed * reverse (mixed * & arg)
  
  DESCRIPTION
          Reverse the content of array or string <arg> and return the result.
--- 1,8 ----
  SYNOPSIS
!         int     reverse(int arg)
!         string  reverse(string arg)
!         mixed * reverse(mixed * arg)
!         mixed * reverse(mixed * & arg)
  
  DESCRIPTION
          Reverse the content of array or string <arg> and return the result.
***************
*** 12,20 ****
          is reversed and then returned.
  
  EXAMPLES
!         reverse (0x306a) - return 0x560c0000
  
!         reverse ("test") - return "tset"
  
          mixed * arr = ({ 1, 2 });
          reverse(arr)  - returns ({ 2, 1 }), leaves arr unchanged.
--- 12,20 ----
          is reversed and then returned.
  
  EXAMPLES
!         reverse(0x306a) - returns 0x560c0000
  
!         reverse("test") - returns "tset"
  
          mixed * arr = ({ 1, 2 });
          reverse(arr)  - returns ({ 2, 1 }), leaves arr unchanged.
diff -c efun.orig/rusage efun/rusage
*** efun.orig/rusage	2009-10-09 16:04:55.000000000 +0000
--- efun/rusage	2009-10-18 21:26:47.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         int *rusage(void)
  
  DESCRIPTION
          Return an array with current system resource usage statistics,
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         int * rusage(void)
  
  DESCRIPTION
          Return an array with current system resource usage statistics,
***************
*** 14,17 ****
          This function is optional.
  
  SEE ALSO
!         sys/resource.h(Unix)
--- 14,17 ----
          This function is optional.
  
  SEE ALSO
!         <sys/resource.h>(Unix)
diff -c efun.orig/save_object efun/save_object
*** efun.orig/save_object	2009-10-09 16:04:55.000000000 +0000
--- efun/save_object	2009-10-19 16:33:35.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int    save_object (string name [, int format])
!         string save_object ([int format])
  
  DESCRIPTION
          Encode the saveable variables of the current object into a string.
--- 1,6 ----
  SYNOPSIS
!         int    save_object(string name [, int format])
!         string save_object([int format])
  
  DESCRIPTION
          Encode the saveable variables of the current object into a string.
***************
*** 20,26 ****
  
             -1: use the driver's native format (default).
              0: original format, used by Amylaar LPMud and LDMud <= 3.2.8 .
!             1: LDMud >= 3.2.9: no-lambda closures, symbols, quoted arrays
                   can be saved.
  
          A variable is considered 'saveable' if it is not declared
--- 20,26 ----
  
             -1: use the driver's native format (default).
              0: original format, used by Amylaar LPMud and LDMud <= 3.2.8 .
!             1: LDMud >= 3.2.9: non-lambda closures, symbols, quoted arrays
                   can be saved.
  
          A variable is considered 'saveable' if it is not declared
diff -c efun.orig/save_value efun/save_value
*** efun.orig/save_value	2009-10-09 16:04:55.000000000 +0000
--- efun/save_value	2009-10-19 20:00:42.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         string save_value (mixed value [, int format])
  
  DESCRIPTION
          Encode the <value> into a string suitable for restoration with
--- 1,6 ----
  SYNOPSIS
!         string save_value(mixed value)
!         string save_value(mixed value, int format)
  
  DESCRIPTION
          Encode the <value> into a string suitable for restoration with
diff -c efun.orig/say efun/say
*** efun.orig/say	2009-10-09 16:04:55.000000000 +0000
--- efun/say	2009-10-18 21:27:13.000000000 +0000
***************
*** 61,67 ****
             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 (not living):
--- 61,67 ----
             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 (not living):
diff -c efun.orig/send_erq efun/send_erq
*** efun.orig/send_erq	2009-10-09 16:04:55.000000000 +0000
--- efun/send_erq	2009-10-19 20:57:28.000000000 +0000
***************
*** 10,16 ****
          erq (a status code) arrives, if the response carries enough data to
          work on.
  
!         <request> can be one of the request codes defined in <erq.h>
          The binary flag ERQ_CB_STRING defines whether the <callback>
          closure expects the returned data packed into an array of
          integers or as a string.
--- 10,16 ----
          erq (a status code) arrives, if the response carries enough data to
          work on.
  
!         <request> can be one of the request codes defined in <erq.h>.
          The binary flag ERQ_CB_STRING defines whether the <callback>
          closure expects the returned data packed into an array of
          integers or as a string.
***************
*** 20,26 ****
  
          <callback>, if set, is a closure of either these forms:
  
!           !ERQ_CB_STRING: void <closure>(int * response_data, int len)
             ERQ_CB_STRING: void <closure>(string response_data)
  
          The result returned from the efun is 0 on failure to send the
--- 20,26 ----
  
          <callback>, if set, is a closure of either these forms:
  
!           !ERQ_CB_STRING: void <closure>(int *response_data, int len)
             ERQ_CB_STRING: void <closure>(string response_data)
  
          The result returned from the efun is 0 on failure to send the
diff -c efun.orig/send_udp efun/send_udp
*** efun.orig/send_udp	2009-10-09 16:04:55.000000000 +0000
--- efun/send_udp	2009-10-19 20:48:51.000000000 +0000
***************
*** 3,9 ****
          int send_udp(string host, int port, int * message)
  
  DESCRIPTION
!         Sends The message in an UDP packet to the given host and port
          number.
  
          The efun causes the privilege violation ("send_udp").
--- 3,9 ----
          int send_udp(string host, int port, int * message)
  
  DESCRIPTION
!         Sends the <message> in an UDP packet to the given host and port
          number.
  
          The efun causes the privilege violation ("send_udp").
***************
*** 14,20 ****
          until the next send_udp() - the latter one might return '0' even
          if itself was successful.
  
! BUG
          If the <host> is given as a fully qualified name (instead of
          an IP address), the execution will block until the name is resolved.
  
--- 14,20 ----
          until the next send_udp() - the latter one might return '0' even
          if itself was successful.
  
! BUGS
          If the <host> is given as a fully qualified name (instead of
          an IP address), the execution will block until the name is resolved.
  
diff -c efun.orig/set_bit efun/set_bit
*** efun.orig/set_bit	2009-10-09 16:04:55.000000000 +0000
--- efun/set_bit	2009-10-19 16:34:10.000000000 +0000
***************
*** 17,23 ****
          s=set_bit("?",5);
  
          Because "?" has a value of 31 the variable s will now contain
!         the character "_" wich is equal to 63 (31+2^5=63).
  
          string s;
          s=set_bit("78",3);
--- 17,23 ----
          s=set_bit("?",5);
  
          Because "?" has a value of 31 the variable s will now contain
!         the character "_" which is equal to 63 (31+2^5=63).
  
          string s;
          s=set_bit("78",3);
diff -c efun.orig/set_combine_charset efun/set_combine_charset
*** efun.orig/set_combine_charset	2009-10-09 16:04:55.000000000 +0000
--- efun/set_combine_charset	2009-10-18 21:02:18.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         void set_combine_charset (int* bitvector)
!         void set_combine_charset (string charset)
!         void set_combine_charset (0)
  
  DESCRIPTION
          Set the set of characters which can be combined into a single string
--- 1,7 ----
  SYNOPSIS
!         void set_combine_charset(int *bitvector)
!         void set_combine_charset(string charset)
!         void set_combine_charset(0)
  
  DESCRIPTION
          Set the set of characters which can be combined into a single string
***************
*** 23,29 ****
          if sizeof(bitvector) > n/8 && bitvector[n/8] & (1 << n%8) .
  
  
! EXAMPLE
          // In a screen-oriented editor, most of the printable characters
          // (excluding answers to editor prompts 'j', 'n' and 'q') can be
          // combined into strings.
--- 23,29 ----
          if sizeof(bitvector) > n/8 && bitvector[n/8] & (1 << n%8) .
  
  
! EXAMPLES
          // In a screen-oriented editor, most of the printable characters
          // (excluding answers to editor prompts 'j', 'n' and 'q') can be
          // combined into strings.
***************
*** 33,39 ****
          // Disable any previous setting.
          set_combine_charset("");
  
- 
  HISTORY
          Introduced in LDMud 3.2.8.
          LDMud 3.2.10 added the ability to reset the charset to the default.
--- 33,38 ----
diff -c efun.orig/set_connection_charset efun/set_connection_charset
*** efun.orig/set_connection_charset	2009-10-09 16:04:55.000000000 +0000
--- efun/set_connection_charset	2009-10-18 21:02:54.000000000 +0000
***************
*** 1,11 ****
  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)
  
  DESCRIPTION
          Set the set of characters that can be output to the
!         interactive user (this does not apply to binary_message() ).
          The function must be called by the interactive user object
          itself.
  
--- 1,11 ----
  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)
  
  DESCRIPTION
          Set the set of characters that can be output to the
!         interactive user (this does not apply to binary_message()).
          The function must be called by the interactive user object
          itself.
  
diff -c efun.orig/set_driver_hook efun/set_driver_hook
*** efun.orig/set_driver_hook	2009-10-09 16:04:55.000000000 +0000
--- efun/set_driver_hook	2009-10-18 21:05:47.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
          void set_driver_hook(int what, closure arg)
          void set_driver_hook(int what, string arg)
!         void set_driver_hook(int what, string * arg)
  
  DESCRIPTION
          This privileged efun sets the driver hook 'what' (values are
!         defined in /sys/driver_hook.h) to 'arg'.
          The exact meanings and types of 'arg' depend of the hook set.
          To remove a hook, set 'arg' to 0.
  
--- 1,13 ----
  SYNOPSIS
+         #include <driver_hook.h>
+ 
          void set_driver_hook(int what, closure arg)
          void set_driver_hook(int what, string arg)
!         void set_driver_hook(int what, string *arg)
  
  DESCRIPTION
          This privileged efun sets the driver hook 'what' (values are
!         defined in <driver_hook.h>) to 'arg'.
          The exact meanings and types of 'arg' depend of the hook set.
          To remove a hook, set 'arg' to 0.
  
***************
*** 97,103 ****
  
  HISTORY
          Introduced in 3.2.1@1 as efun309(), renamed to
!         set_driver_hook() in 3.2.1@13
  
  SEE ALSO
          hooks(C)
--- 99,105 ----
  
  HISTORY
          Introduced in 3.2.1@1 as efun309(), renamed to
!         set_driver_hook() in 3.2.1@13.
  
  SEE ALSO
          hooks(C)
diff -c efun.orig/set_extra_wizinfo efun/set_extra_wizinfo
*** efun.orig/set_extra_wizinfo	2009-10-09 16:04:55.000000000 +0000
--- efun/set_extra_wizinfo	2009-10-19 16:34:29.000000000 +0000
***************
*** 1,7 ****
  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)
  
  DESCRIPTION
          Set the value <extra> as the 'extra' information for the wizlist
--- 1,7 ----
  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)
  
  DESCRIPTION
          Set the value <extra> as the 'extra' information for the wizlist
diff -c efun.orig/set_limits efun/set_limits
*** efun.orig/set_limits	2009-10-09 16:04:55.000000000 +0000
--- efun/set_limits	2009-10-19 16:34:57.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
!         #include <sys/rtlimits.h>
  
          void set_limits(int tag, int value, ...)
!         void set_limits(int * limits)
  
  DESCRIPTION
          Set the default runtime limits from the given arguments. The new
--- 1,8 ----
  SYNOPSIS
!         #include <rtlimits.h>
  
          void set_limits(int tag, int value, ...)
!         void set_limits(int *limits)
  
  DESCRIPTION
          Set the default runtime limits from the given arguments. The new
***************
*** 25,38 ****
          The efun causes a privilege violation ("set_limits", current_object,
          limits-array).
  
  EXAMPLES
!         set_limits( ({ 200000 }) )
!         set_limits( LIMIT_EVAL, 200000 )
            --> set new default eval_cost limit to 200000
  
!         set_limits( ({ LIMIT_UNLIMITED, LIMIT_KEEP, 5000 }) )
!         set_limits( LIMIT_EVAL, LIMIT_UNLIMITED, LIMIT_ARRAY, LIMIT_KEEP,
!                     LIMIT_MAPPING, 5000 )
            --> set new eval_cost limit to unlimited, keep the current
                array size limit, and limit mapping sizes to 5000.
  
--- 25,39 ----
          The efun causes a privilege violation ("set_limits", current_object,
          limits-array).
  
+ 
  EXAMPLES
!         set_limits(({ 200000 }))
!         set_limits(LIMIT_EVAL, 200000)
            --> set new default eval_cost limit to 200000
  
!         set_limits(({ LIMIT_UNLIMITED, LIMIT_KEEP, 5000 }))
!         set_limits(LIMIT_EVAL, LIMIT_UNLIMITED, LIMIT_ARRAY, LIMIT_KEEP,
!                     LIMIT_MAPPING, 5000)
            --> set new eval_cost limit to unlimited, keep the current
                array size limit, and limit mapping sizes to 5000.
  
diff -c efun.orig/set_max_commands efun/set_max_commands
*** efun.orig/set_max_commands	2009-10-09 16:04:55.000000000 +0000
--- efun/set_max_commands	2009-10-19 16:35:17.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         void set_max_commands (int num)
!         void set_max_commands (int num, object obj)
  
  DESCRIPTION
          Set the max number of commands the interactive <obj> is
--- 1,6 ----
  SYNOPSIS
!         void set_max_commands(int num)
!         void set_max_commands(int num, object obj)
  
  DESCRIPTION
          Set the max number of commands the interactive <obj> is
***************
*** 16,30 ****
          which causes a LPC call - actions and calls to input_to()
          alike.
  
- HISTORY
-         Introduced in LDMud 3.2.10.
  
! EXAMPLE
          To establish a mud-wide default for the maximum command rate,
          write master::connect() like this:
  
!         object connect ()
!         {
              object obj;
  
              ...
--- 16,27 ----
          which causes a LPC call - actions and calls to input_to()
          alike.
  
  
! EXAMPLES
          To establish a mud-wide default for the maximum command rate,
          write master::connect() like this:
  
!         object connect() {
              object obj;
  
              ...
***************
*** 36,41 ****
--- 33,40 ----
          modified max_commands will be rebound from the master object
          to the returned object.
  
+ HISTORY
+         Introduced in LDMud 3.2.10.
  
  SEE ALSO
          get_max_commands(E), privilege_violation(M)
diff -c efun.orig/set_next_reset efun/set_next_reset
*** efun.orig/set_next_reset	2009-10-09 16:04:55.000000000 +0000
--- efun/set_next_reset	2009-10-19 16:35:27.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int set_next_reset (int delay)
  
  DESCRIPTION
          Instruct the gamedriver to reset this object not earlier than
--- 1,5 ----
  SYNOPSIS
!         int set_next_reset(int delay)
  
  DESCRIPTION
          Instruct the gamedriver to reset this object not earlier than
***************
*** 13,19 ****
          Note that the actual time the reset occurs depends on when
          the object will be used after the given time delay.
  
! EXAMPLE
          set_next_reset(15*60); // Next reset in 15 Minutes or later
          set_next_reset(0)      --> just returns the time until the
                                     next reset.
--- 13,19 ----
          Note that the actual time the reset occurs depends on when
          the object will be used after the given time delay.
  
! EXAMPLES
          set_next_reset(15*60); // Next reset in 15 Minutes or later
          set_next_reset(0)      --> just returns the time until the
                                     next reset.
diff -c efun.orig/set_this_object efun/set_this_object
*** efun.orig/set_this_object	2009-10-09 16:04:55.000000000 +0000
--- efun/set_this_object	2009-10-19 20:23:49.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         void set_this_object(object object_to_pretend_to_be);
  
  DESCRIPTION
          This is a privileged function, only to be used in the master
--- 1,5 ----
  SYNOPSIS
!         void set_this_object(object object_to_pretend_to_be)
  
  DESCRIPTION
          This is a privileged function, only to be used in the master
***************
*** 47,53 ****
  
          Some people would consider this a feature.
  
- 
  HISTORY
          LDMud 3.2.10 actively prevents references to global variables
          and function calls by address while set_this_object() is in
--- 47,52 ----
diff -c efun.orig/sgn efun/sgn
*** efun.orig/sgn	2009-10-09 16:04:55.000000000 +0000
--- efun/sgn	2009-10-19 16:35:45.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int sgn (int|float arg)
  
  DESCRIPTION
          Return the sign of the argument.
--- 1,5 ----
  SYNOPSIS
!         int sgn(int|float arg)
  
  DESCRIPTION
          Return the sign of the argument.
diff -c efun.orig/sha1 efun/sha1
*** efun.orig/sha1	2009-10-09 16:04:55.000000000 +0000
--- efun/sha1	2009-10-19 16:36:01.000000000 +0000
***************
*** 1,7 ****
  OBSOLETE
  SYNOPSIS
!         string sha1 (string arg [ , int iterations ] )
!         string sha1 (int  * arg [ , int iterations ] )
  
  DESCRIPTION
          Create and return a SHA1 message digest from <arg>.
--- 1,7 ----
  OBSOLETE
  SYNOPSIS
!         string sha1(string arg [, int iterations ])
!         string sha1(int  * arg [, int iterations ])
  
  DESCRIPTION
          Create and return a SHA1 message digest from <arg>.
diff -c efun.orig/shadow efun/shadow
*** efun.orig/shadow	2009-10-09 16:04:55.000000000 +0000
--- efun/shadow	2009-10-19 16:36:55.000000000 +0000
***************
*** 31,54 ****
          With the three objects a.c, b.c and c.c
  
              --- a.c ---
!             int 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();
--- 31,50 ----
          With the three objects a.c, b.c and c.c
  
              --- a.c ---
!             int 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();
***************
*** 57,69 ****
              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); }
--- 53,63 ----
              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); }
***************
*** 111,119 ****
          was to b itself, which the gamedriver recognized as being shadowed
          by c.
  
- 
- 
- 
  HISTORY
          Up to 3.2.1@46, destructing a shadowed object also destructs
          all shadows. Since 3.2.1@47, shadows may survive the
--- 105,110 ----
diff -c efun.orig/sl_exec efun/sl_exec
*** efun.orig/sl_exec	2009-10-09 16:04:55.000000000 +0000
--- efun/sl_exec	2009-10-18 21:06:15.000000000 +0000
***************
*** 1,6 ****
  OPTIONAL
  SYNOPSIS
!         mixed* sl_exec(string statement, ...)
  
  DESCRIPTION
          Executes the SQL statement <statement> for the current
--- 1,6 ----
  OPTIONAL
  SYNOPSIS
!         mixed * sl_exec(string statement, ...)
  
  DESCRIPTION
          Executes the SQL statement <statement> for the current
diff -c efun.orig/sort_array efun/sort_array
*** efun.orig/sort_array	2009-10-09 16:04:55.000000000 +0000
--- efun/sort_array	2009-10-18 21:28:12.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...)
  
  DESCRIPTION
          Create a shallow copy of the array <arr> and sort the copy
--- 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...)
  
  DESCRIPTION
          Create a shallow copy of the array <arr> and sort the copy
***************
*** 15,24 ****
          If the 'arr' argument equals 0, the result is also 0.
  
          'ob' is the object in which the ordering function is called
!         and may be given as object or by its filename.         If <ob> is omitted,
          or neither a string nor an object, it defaults to this_object().
  
- 
          The elements from the array to be sorted are passed in pairs to
          the function 'wrong_order' as arguments, followed by the <extra>
          arguments if any.
--- 15,23 ----
          If the 'arr' argument equals 0, the result is also 0.
  
          'ob' is the object in which the ordering function is called
!         and may be given as object or by its filename. If <ob> is omitted
          or neither a string nor an object, it defaults to this_object().
  
          The elements from the array to be sorted are passed in pairs to
          the function 'wrong_order' as arguments, followed by the <extra>
          arguments if any.
diff -c efun.orig/sscanf efun/sscanf
*** efun.orig/sscanf	2009-10-09 16:04:55.000000000 +0000
--- efun/sscanf	2009-10-19 16:37:27.000000000 +0000
***************
*** 2,8 ****
          int sscanf(string str, string fmt, mixed var1, mixed var2, ...)
  
  DESCRIPTION
- 
          Parse a string str using the format fmt. fmt can contain
          strings seperated by %d and %s. Every %d and %s corresponds to
          one of var1, var2, ... .
--- 2,7 ----
***************
*** 52,58 ****
          The function sscanf is special, in that arguments are passed
          by reference automatically.
  
! EXAMPLE
          string who, what;
          if (sscanf("throw frisbee to rover",
             "throw %s to %s", what, who) != 2)
--- 51,57 ----
          The function sscanf is special, in that arguments are passed
          by reference automatically.
  
! EXAMPLES
          string who, what;
          if (sscanf("throw frisbee to rover",
             "throw %s to %s", what, who) != 2)
diff -c efun.orig/start_mccp_compress efun/start_mccp_compress
*** efun.orig/start_mccp_compress	2009-10-09 16:04:55.000000000 +0000
--- efun/start_mccp_compress	2009-10-15 21:15:58.000000000 +0000
***************
*** 21,26 ****
--- 21,27 ----
          Available only if the driver is compiled with MCCP enabled;
          __MCCP__ is defined in that case.
  
+ 
  HISTORY
          Added in LDMud 3.3.447, backported to LDMud 3.2.10.
          LDMud 3.3.666 added the possibility to enable outgoing compression
diff -c efun.orig/strftime efun/strftime
*** efun.orig/strftime	2009-10-09 16:04:55.000000000 +0000
--- efun/strftime	2009-10-15 21:34:14.000000000 +0000
***************
*** 38,60 ****
             name.
       %B    is replaced by national representation of the full month name.
       %b    is replaced by national representation of the abbreviated month name.
!      %C    is replaced by (year / 100) as decimal number; single digits are pre-
!            ceded by a zero.
       %c    is replaced by national representation of time and date.
       %D    is equivalent to ``%m/%d/%y''.
       %d    is replaced by the day of the month as a decimal number (01-31).
       %E* %O*
             POSIX locale extensions.  The sequences %Ec %EC %Ex %EX %Ey %EY %Od
!            %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy are supposed to pro-
!            vide alternate representations.
!            Additionly %OB implemented to represent alternative months names (used
!            standalone, without day mentioned).
       %e    is replaced by the day of month as a decimal number (1-31); single
             digits are preceded by a blank.
       %F    is equivalent to ``%Y-%m-%d''.
!      %G    is replaced by a year as a decimal number with century.  This year is
!            the one that contains the greater part of the week (Monday as the
!            first day of the week).
       %g    is replaced by the same year as in ``%G'', but as a decimal number
             without century (00-99).
       %H    is replaced by the hour (24-hour clock) as a decimal number (00-23).
--- 38,60 ----
             name.
       %B    is replaced by national representation of the full month name.
       %b    is replaced by national representation of the abbreviated month name.
!      %C    is replaced by (year / 100) as decimal number; single digits are
!            preceded by a zero.
       %c    is replaced by national representation of time and date.
       %D    is equivalent to ``%m/%d/%y''.
       %d    is replaced by the day of the month as a decimal number (01-31).
       %E* %O*
             POSIX locale extensions.  The sequences %Ec %EC %Ex %EX %Ey %EY %Od
!            %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy are supposed to
!            provide alternate representations.
!            Additionally %OB implemented to represent alternative 
!            months names (used standalone, without day mentioned).
       %e    is replaced by the day of month as a decimal number (1-31); single
             digits are preceded by a blank.
       %F    is equivalent to ``%Y-%m-%d''.
!      %G    is replaced by a year as a decimal number with century.  This year
!            is the one that contains the greater part of the week (Monday as
!            the first day of the week).
       %g    is replaced by the same year as in ``%G'', but as a decimal number
             without century (00-99).
       %H    is replaced by the hour (24-hour clock) as a decimal number (00-23).
***************
*** 78,118 ****
             mktime(3)).
       %T    is equivalent to ``%H:%M:%S''.
       %t    is replaced by a tab.
!      %U    is replaced by the week number of the year (Sunday as the first day of
!            the week) as a decimal number (00-53).
!      %u    is replaced by the weekday (Monday as the first day of the week) as a
!            decimal number (1-7).
!      %V    is replaced by the week number of the year (Monday as the first day of
!            the week) as a decimal number (01-53).  If the week containing January
!            1 has four or more days in the new year, then it is week 1; otherwise
!            it is the last week of the previous year, and the next week is week 1.
       %v    is equivalent to ``%e-%b-%Y''.
!      %W    is replaced by the week number of the year (Monday as the first day of
!            the week) as a decimal number (00-53).
!      %w    is replaced by the weekday (Sunday as the first day of the week) as a
!            decimal number (0-6).
       %X    is replaced by national representation of the time.
       %x    is replaced by national representation of the date.
       %Y    is replaced by the year with century as a decimal number.
       %y    is replaced by the year without century as a decimal number (00-99).
       %Z    is replaced by the time zone name.
       %z    is replaced by the time zone offset from UTC; a leading plus sign
!            stands for east of UTC, a minus sign for west of UTC, hours and min-
!            utes follow with two digits each and no delimiter between them (common
!            form for RFC 822 date headers).
!      %+    is replaced by national representation of the date and time (the for-
!            mat is similar to that produced by date(1)).
       %%    is replaced by `%'.
       
  BUGS
!     There is no conversion specification for the phase of the moon.
  
! EXAMPLE
!      write(strftime("Heute ist %A, der %d. %B %Y.\n"))
!      ergibt z.B.
!      "Heute ist Montag, der 24. September 2007.\n"
  
! CHANGES
       Introduced in LDMud 3.3.718.
  
  SEE ALSO
--- 78,119 ----
             mktime(3)).
       %T    is equivalent to ``%H:%M:%S''.
       %t    is replaced by a tab.
!      %U    is replaced by the week number of the year (Sunday as the
!            first day of the week) as a decimal number (00-53).
!      %u    is replaced by the weekday (Monday as the first day of
!            the week) as a decimal number (1-7).
!      %V    is replaced by the week number of the year (Monday as the
!            first day of the week) as a decimal number (01-53).  If the week
!            containing January 1st has four or more days in the new year,
!            then it is week 1; otherwise it is the last week of the previous
!            year, and the next week is week 1.
       %v    is equivalent to ``%e-%b-%Y''.
!      %W    is replaced by the week number of the year (Monday as the 
!            first day of the week) as a decimal number (00-53).
!      %w    is replaced by the weekday (Sunday as the first day of the week)
!            as a decimal number (0-6).
       %X    is replaced by national representation of the time.
       %x    is replaced by national representation of the date.
       %Y    is replaced by the year with century as a decimal number.
       %y    is replaced by the year without century as a decimal number (00-99).
       %Z    is replaced by the time zone name.
       %z    is replaced by the time zone offset from UTC; a leading plus sign
!            stands for east of UTC, a minus sign for west of UTC, hours and
!            minutes follow with two digits each and no delimiter between
!            them (common form for RFC 822 date headers).
!      %+    is replaced by national representation of the date and time
!            (the format is similar to that produced by date(1)).
       %%    is replaced by `%'.
       
+ 
  BUGS
!         There is no conversion specification for the phase of the moon.
  
! EXAMPLES
!         write(strftime("Today is %A, %d. %B %Y.\n"))
!           results in "Today is Monday, 24. September 2007.\n"
  
! HISTORY
       Introduced in LDMud 3.3.718.
  
  SEE ALSO
diff -c efun.orig/strrstr efun/strrstr
*** efun.orig/strrstr	2009-10-09 16:04:55.000000000 +0000
--- efun/strrstr	2009-10-19 16:37:32.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int strrstr (string str, string str2)
!         int strrstr (string str, string str2, int pos)
  
  DESCRIPTION
          Returns the index of the first occurance of <str2> in <str> searching
--- 1,6 ----
  SYNOPSIS
!         int strrstr(string str, string str2)
!         int strrstr(string str, string str2, int pos)
  
  DESCRIPTION
          Returns the index of the first occurance of <str2> in <str> searching
diff -c efun.orig/strstr efun/strstr
*** efun.orig/strstr	2009-10-09 16:04:55.000000000 +0000
--- efun/strstr	2009-10-19 16:37:37.000000000 +0000
***************
*** 1,6 ****
  SYNOPSIS
!         int strstr (string str, string str2)
!         int strstr (string str, string str2, int pos)
  
  DESCRIPTION
          Returns the index of <str2> in <str> searching from position <pos>
--- 1,6 ----
  SYNOPSIS
!         int strstr(string str, string str2)
!         int strstr(string str, string str2, int pos)
  
  DESCRIPTION
          Returns the index of <str2> in <str> searching from position <pos>
diff -c efun.orig/struct_info efun/struct_info
*** efun.orig/struct_info	2009-10-09 16:04:55.000000000 +0000
--- efun/struct_info	2009-10-18 21:07:06.000000000 +0000
***************
*** 2,8 ****
          #include <struct_info.h>
          #include <lpctypes.h>
  
!         mixed * struct_info (struct st, int what)
  
  DESCRIPTION
          Return information about the structure of struct <st> in an array.
--- 2,8 ----
          #include <struct_info.h>
          #include <lpctypes.h>
  
!         mixed * struct_info(struct st, int what)
  
  DESCRIPTION
          Return information about the structure of struct <st> in an array.
***************
*** 26,33 ****
            string [SI_PROG_NAME]:   the name of program defining the struct
            string [SI_PROG_ID]:     the id of the program defining the struct
            mixed  [SI_BASE]:        0, or the base struct information
!           mixed* [SI_MEMBER+0]:    the first member information
!           mixed* [SI_MEMBER+n]:    the last member information
  
          The member information entries are arrays themselves with
          these elements:
--- 26,33 ----
            string [SI_PROG_NAME]:   the name of program defining the struct
            string [SI_PROG_ID]:     the id of the program defining the struct
            mixed  [SI_BASE]:        0, or the base struct information
!           mixed *[SI_MEMBER+0]:    the first member information
!           mixed *[SI_MEMBER+n]:    the last member information
  
          The member information entries are arrays themselves with
          these elements:
Common subdirectories: efun.orig/.svn and efun/.svn
diff -c efun.orig/symbol_function efun/symbol_function
*** efun.orig/symbol_function	2009-10-09 16:04:55.000000000 +0000
--- efun/symbol_function	2009-10-19 16:37:45.000000000 +0000
***************
*** 24,30 ****
          symbol_function("QueryProp", other_obj) -> other_obj->QueryProp()
  
  HISTORY
!         Introduced in 3.2@70
  
  SEE ALSO
          lambda(E), quote(E)
--- 24,30 ----
          symbol_function("QueryProp", other_obj) -> other_obj->QueryProp()
  
  HISTORY
!         Introduced in 3.2@70.
  
  SEE ALSO
          lambda(E), quote(E)
diff -c efun.orig/symbolp efun/symbolp
*** efun.orig/symbolp	2009-10-09 16:04:55.000000000 +0000
--- efun/symbolp	2009-10-15 21:32:02.000000000 +0000
***************
*** 4,10 ****
  DESCRIPTION
          Returns true, if arg is a symbol.
  
! EXAMPLE
          symbolp('foo) returns 1.
  
  HISTORY
--- 4,10 ----
  DESCRIPTION
          Returns true, if arg is a symbol.
  
! EXAMPLES
          symbolp('foo) returns 1.
  
  HISTORY
diff -c efun.orig/symbol_variable efun/symbol_variable
*** efun.orig/symbol_variable	2009-10-09 16:04:55.000000000 +0000
--- efun/symbol_variable	2009-10-19 16:37:59.000000000 +0000
***************
*** 15,28 ****
          and private in the inherited object (i.e. hidden), then a
          privilege violation will occur.
  
- HISTORY
-         Enabled since 3.2.1@8
- 
  EXAMPLES
          int base;
          int var;
!         symbol_variable("var")        -> #'<this_object>->var
          symbol_variable(0)        -> #'<this_object>->base
  
  SEE ALSO
          lambda(E), quote(E), symbol_function(E)
--- 15,28 ----
          and private in the inherited object (i.e. hidden), then a
          privilege violation will occur.
  
  EXAMPLES
          int base;
          int var;
!         symbol_variable("var")    -> #'<this_object>->var
          symbol_variable(0)        -> #'<this_object>->base
  
+ HISTORY
+         Enabled since 3.2.1@8.
+ 
  SEE ALSO
          lambda(E), quote(E), symbol_function(E)
diff -c efun.orig/terminal_colour efun/terminal_colour
*** efun.orig/terminal_colour	2009-10-09 16:04:55.000000000 +0000
--- efun/terminal_colour	2009-10-19 16:39:06.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         varargs string terminal_colour( string str
!                                       , null|mapping|closure map
!                                       , int wrap, int indent )
  
  DESCRIPTION
          If <map> is given as a non-0 value, this efun expands all
--- 1,6 ----
  SYNOPSIS
!         varargs string terminal_colour(string str, null|mapping|closure map,
!                                        int wrap, int indent)
  
  DESCRIPTION
          If <map> is given as a non-0 value, this efun expands all
***************
*** 61,75 ****
          then tries to treat every substring as color key. One can achieve
          the MudOS behaviour with this LPC function:
  
!           string mudos_terminal_colour(string str, mapping ext, int w, int i)
!           {
              return terminal_colour("%^"+implode(explode(str, "%^")-({""})
                                                 ,"%^%^")
                                    , ext, w, i);
            }
  
- 
- 
  EXAMPLES
          mapping trans;
          string str;
--- 60,71 ----
          then tries to treat every substring as color key. One can achieve
          the MudOS behaviour with this LPC function:
  
!           string mudos_terminal_colour(string str, mapping ext, int w, int i) {
              return terminal_colour("%^"+implode(explode(str, "%^")-({""})
                                                 ,"%^%^")
                                    , ext, w, i);
            }
  
  EXAMPLES
          mapping trans;
          string str;
diff -c efun.orig/this_player efun/this_player
*** efun.orig/this_player	2009-10-09 16:04:55.000000000 +0000
--- efun/this_player	2009-10-15 21:32:05.000000000 +0000
***************
*** 8,14 ****
          If called from inside the heart_beat() of a not living object
          0 will be returned.
  
! EXAMPLE
          if (this_player() != this_interactive())
             write("Hey, somebody must have forced us to do a
             command!\n");
--- 8,14 ----
          If called from inside the heart_beat() of a not living object
          0 will be returned.
  
! EXAMPLES
          if (this_player() != this_interactive())
             write("Hey, somebody must have forced us to do a
             command!\n");
diff -c efun.orig/throw efun/throw
*** efun.orig/throw	2009-10-09 16:04:55.000000000 +0000
--- efun/throw	2009-10-15 21:32:08.000000000 +0000
***************
*** 9,15 ****
          Calling throw() without previous catch() does not make sense
          and will result in an ``throw without catch'' error.
  
! EXAMPLE
          catch(throw("aborting execution"));
          This will just print the string "aborting execution".
  
--- 9,15 ----
          Calling throw() without previous catch() does not make sense
          and will result in an ``throw without catch'' error.
  
! EXAMPLES
          catch(throw("aborting execution"));
          This will just print the string "aborting execution".
  
diff -c efun.orig/time efun/time
*** efun.orig/time	2009-10-09 16:04:55.000000000 +0000
--- efun/time	2009-10-15 21:32:11.000000000 +0000
***************
*** 11,17 ****
          The result of time() does not change during the course of a command
          execution.
  
! EXAMPLE
          write(ctime(time())+"\n");
  
          Print out the current date and time.
--- 11,17 ----
          The result of time() does not change during the course of a command
          execution.
  
! EXAMPLES
          write(ctime(time())+"\n");
  
          Print out the current date and time.
diff -c efun.orig/tls_check_certificate efun/tls_check_certificate
*** efun.orig/tls_check_certificate	2009-10-09 16:04:55.000000000 +0000
--- efun/tls_check_certificate	2009-10-19 20:24:05.000000000 +0000
***************
*** 1,7 ****
  PRELIMINARY
  SYNOPSIS
!         mixed *tls_check_certificate(object obj);
!         mixed *tls_check_certificate(object obj, int extra);
  
  DESCRIPTION
          tls_check_certificate() checks the certificate of the secured
--- 1,7 ----
  PRELIMINARY
  SYNOPSIS
!         mixed * tls_check_certificate(object obj)
!         mixed * tls_check_certificate(object obj, int extra)
  
  DESCRIPTION
          tls_check_certificate() checks the certificate of the secured
***************
*** 13,38 ****
          error is thrown.
          Otherwise, the result is an array with these values:
  
!           int [0]      : Result code of SSL_get_verify_result (see man 1 verify
!                          subsection DIAGNOSTICS for possible values)
!           array [1]    : array with 3*n entries of extra x509 data.
!                          structure is:
!                             3*i    : numerical form of object name,
!                                      e.g. "2.5.4.3"
!                             3*i + 1: long or short name if available,
!                                      e.g. "commonName"
!                             3*i + 2: value
!           array [2]    : if extra is set:
!                             array with 3*n entries of x509 extension data
!                             data structure is:
!                             3*i    : numerical form of extension name
!                             3*i + 1: long or short name of extension
!                                      name if available
!                             3*i + 2: array of strings with the data
!                                      structure of [1]
  
!         Note: a x509 certificate can have more than one object with
!         the same name
  
  HISTORY
          Introduced in LDMud 3.3.672/3.2.11.
--- 13,38 ----
          error is thrown.
          Otherwise, the result is an array with these values:
  
!           int [0]   : Result code of SSL_get_verify_result (see 'man 1 verify',
!                       subsection DIAGNOSTICS for possible values)
!           array [1] : array with 3*n entries of extra x509 data.
!                       structure is:
!                          3*i    : numerical form of object name,
!                                   e.g. "2.5.4.3"
!                          3*i + 1: long or short name if available,
!                                   e.g. "commonName"
!                          3*i + 2: value
!           array [2] : if extra is set:
!                          array with 3*n entries of x509 extension data
!                          data structure is:
!                          3*i    : numerical form of extension name
!                          3*i + 1: long or short name of extension
!                                   name if available
!                          3*i + 2: array of strings with the data
!                                   structure of [1]
  
!         Note: An X509 certificate can have more than one object with
!         the same name.
  
  HISTORY
          Introduced in LDMud 3.3.672/3.2.11.
diff -c efun.orig/tls_init_connection efun/tls_init_connection
*** efun.orig/tls_init_connection	2009-10-09 16:04:55.000000000 +0000
--- efun/tls_init_connection	2009-10-19 16:39:38.000000000 +0000
***************
*** 1,7 ****
  PRELIMINARY
  SYNOPSIS
          int tls_init_connection(object ob)
!         int tls_init_connection(object ob, string fun, string|object fob, mixed extra...)
          int tls_init_connection(object ob, closure fun, mixed extra...)
  
  DESCRIPTION
--- 1,8 ----
  PRELIMINARY
  SYNOPSIS
          int tls_init_connection(object ob)
!         int tls_init_connection(object ob, string fun, string|object fob,
!                                 mixed extra...)
          int tls_init_connection(object ob, closure fun, mixed extra...)
  
  DESCRIPTION
diff -c efun.orig/tls_query_connection_info efun/tls_query_connection_info
*** efun.orig/tls_query_connection_info	2009-10-09 16:04:55.000000000 +0000
--- efun/tls_query_connection_info	2009-10-19 16:39:46.000000000 +0000
***************
*** 1,7 ****
  PRELIMINARY
  SYNOPSIS
!         #include <sys/ tls.h>
!         int *tls_query_connection_info (object ob)
  
  DESCRIPTION
          If <ob> does not have a TLS connection or if the connection
--- 1,8 ----
  PRELIMINARY
  SYNOPSIS
!         #include <tls.h>
! 
!         int * tls_query_connection_info(object ob)
  
  DESCRIPTION
          If <ob> does not have a TLS connection or if the connection
diff -c efun.orig/to_array efun/to_array
*** efun.orig/to_array	2009-10-09 16:04:55.000000000 +0000
--- efun/to_array	2009-10-18 21:30:30.000000000 +0000
***************
*** 1,9 ****
  SYNOPSIS
!         mixed *to_array(string)
!         mixed *to_array(symbol)
!         mixed *to_array(quotedarray)
!         mixed *to_array(mixed *)
!         mixed *to_array(struct)
  
          (int*)<value>
  
--- 1,9 ----
  SYNOPSIS
!         mixed * to_array(string)
!         mixed * to_array(symbol)
!         mixed * to_array(quotedarray)
!         mixed * to_array(mixed *)
!         mixed * to_array(struct)
  
          (int*)<value>
  
***************
*** 16,22 ****
          Quoted arrays are ``dequoted'', and arrays are left as they
          are.
  
!         structs are converted into a normal array.
  
  BUGS
          The cast notation only works if the precise type of <value>
--- 16,22 ----
          Quoted arrays are ``dequoted'', and arrays are left as they
          are.
  
!         Structs are converted into a normal array.
  
  BUGS
          The cast notation only works if the precise type of <value>
diff -c efun.orig/to_int efun/to_int
*** efun.orig/to_int	2009-10-09 16:04:55.000000000 +0000
--- efun/to_int	2009-10-19 16:41:10.000000000 +0000
***************
*** 16,22 ****
  
          Regarding floats, it is important to keep rounding effects
          in mind: to_int(3.1*10.0) does not return 31, but instead 30,
!         because internally the result of the multiplication is 30.999999 .
  
          The function supports the '0x', '0o' and '0b' base prefixes.
  
--- 16,22 ----
  
          Regarding floats, it is important to keep rounding effects
          in mind: to_int(3.1*10.0) does not return 31, but instead 30,
!         because internally the result of the multiplication is 30.999999.
  
          The function supports the '0x', '0o' and '0b' base prefixes.
  
***************
*** 26,32 ****
          function form instead.
  
  HISTORY
!         Introduced in 3.2.1@2
          LDMud 3.2.11/3.3.611 added support for the base prefixes.
  
  SEE ALSO
--- 26,32 ----
          function form instead.
  
  HISTORY
!         Introduced in 3.2.1@2.
          LDMud 3.2.11/3.3.611 added support for the base prefixes.
  
  SEE ALSO
diff -c efun.orig/to_string efun/to_string
*** efun.orig/to_string	2009-10-09 16:04:55.000000000 +0000
--- efun/to_string	2009-10-19 16:41:27.000000000 +0000
***************
*** 12,18 ****
  
          CAVEAT: Arrays are considered exploded strings, ie. arrays of char
          codes, and are 'imploded' up to the first non-number entry, whatever
!         comes first. That means that to_string( ({ 49, 50 }) ) will return
          "12" and not "({ 49, 50 })".
  
  BUGS
--- 12,18 ----
  
          CAVEAT: Arrays are considered exploded strings, ie. arrays of char
          codes, and are 'imploded' up to the first non-number entry, whatever
!         comes first. That means that to_string(({ 49, 50 })) will return
          "12" and not "({ 49, 50 })".
  
  BUGS
diff -c efun.orig/trace efun/trace
*** efun.orig/trace	2009-10-09 16:04:55.000000000 +0000
--- efun/trace	2009-10-18 21:07:23.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         #include <sys/trace.h>
  
          int trace(int traceflags)
  
--- 1,5 ----
  SYNOPSIS
!         #include <trace.h>
  
          int trace(int traceflags)
  
***************
*** 31,46 ****
          massive output! TRACE_OBJNAME should be avoided when you know
          what you trace.
  
- 
          The master-lfun valid_trace() is called with ("trace", traceflags)
          as argument to verify the use of this efun.
  
! EXAMPLE
          object obj;
          string prefix;
!         obj=find_player("wessex");
!         prefix=object_name(obj);
!         prefix=prefix[1..strlen(prefix)-1]; /* cut off the leading "/" */
          traceprefix(prefix);
            /* From here on, only code in the object "std/player#69"
             * will be traced.
--- 31,46 ----
          massive output! TRACE_OBJNAME should be avoided when you know
          what you trace.
  
          The master-lfun valid_trace() is called with ("trace", traceflags)
          as argument to verify the use of this efun.
  
! 
! EXAMPLES
          object obj;
          string prefix;
!         obj = find_player("wessex");
!         prefix = object_name(obj);
!         prefix = prefix[1..];  /* cut off the leading "/" */
          traceprefix(prefix);
            /* From here on, only code in the object "std/player#69"
             * will be traced.
***************
*** 51,57 ****
  
  HISTORY
          LDMud 3.2.9 passes the <traceflags> argument to the valid_trace()
!             apply as well.
  
  SEE ALSO
          traceprefix(E)
--- 51,57 ----
  
  HISTORY
          LDMud 3.2.9 passes the <traceflags> argument to the valid_trace()
!         apply as well.
  
  SEE ALSO
          traceprefix(E)
diff -c efun.orig/traceprefix efun/traceprefix
*** efun.orig/traceprefix	2009-10-09 16:04:55.000000000 +0000
--- efun/traceprefix	2009-10-15 22:01:19.000000000 +0000
***************
*** 1,4 ****
--- 1,6 ----
  SYNOPSIS
+         #include <trace.h>
+ 
          string traceprefix(string prefix)
          string traceprefix(int dummy)
  
***************
*** 13,35 ****
          The master-lfun valid_trace() is called with ("traceprefix", prefix)
          as arguments to verify the use of this efun.
  
! EXAMPLE
          object obj;
          string prefix;
          obj = find_player("wessex");
          prefix = object_name(obj);
!         prefix = prefix[1..strlen(prefix)-1]; /* cut off the leading "/" */
          traceprefix(prefix);
            /* From here on, only code in the object "std/player#69"
             * will be traced.
             */
!         trace(1|2|4|8);
          ...
!         trace(0);
  
  HISTORY
          LDMud 3.2.9 passes the <prefix> argument to the valid_trace()
!             apply as well.
  
  SEE ALSO
          trace(E)
--- 15,37 ----
          The master-lfun valid_trace() is called with ("traceprefix", prefix)
          as arguments to verify the use of this efun.
  
! EXAMPLES
          object obj;
          string prefix;
          obj = find_player("wessex");
          prefix = object_name(obj);
!         prefix = prefix[1..];  /* cut off the leading "/" */
          traceprefix(prefix);
            /* From here on, only code in the object "std/player#69"
             * will be traced.
             */
!         trace(TRACE_CALL | TRACE_CALL_OTHER | TRACE_RETURN | TRACE_ARGS);
          ...
!         trace(TRACE_NOTHING);
  
  HISTORY
          LDMud 3.2.9 passes the <prefix> argument to the valid_trace()
!         apply as well.
  
  SEE ALSO
          trace(E)
diff -c efun.orig/transpose_array efun/transpose_array
*** efun.orig/transpose_array	2009-10-09 16:04:55.000000000 +0000
--- efun/transpose_array	2009-10-19 20:24:28.000000000 +0000
***************
*** 1,19 ****
  SYNOPSIS
!         mixed *transpose_array (mixed *arr);
  
  DESCRIPTION
!         transpose_array ( ({ ({1,2,3}), ({a,b,c}) }) )
                          == ({ ({1,a}), ({2,b}), ({3,c}) })
  
          transpose_array() applied to an alist results in an array of
          ({ key, data }) pairs, useful if you want to use sort_array()
          or filter() on the alist.
  
! EXAMPLE
!         sort_array(transpose_array( ({ m_indices(map), m_values(map) }) ),
!                    lambda( ({ 'a, 'b }),
!                            ({ #'<, ({ #'[, 'a, 0 }),
!                                    ({ #'[, 'b, 0}) }) )
  
          The given mapping 'map' is returned as an array of
          ({ key, data }) pairs, sorted by the keys.
--- 1,19 ----
  SYNOPSIS
!         mixed * transpose_array(mixed *arr)
  
  DESCRIPTION
!         transpose_array(({ ({1,2,3}), ({a,b,c}) }))
                          == ({ ({1,a}), ({2,b}), ({3,c}) })
  
          transpose_array() applied to an alist results in an array of
          ({ key, data }) pairs, useful if you want to use sort_array()
          or filter() on the alist.
  
! EXAMPLES
!         sort_array(transpose_array(({ m_indices(map), m_values(map) })),
!                    lambda(({ 'a, 'b }),
!                           ({ #'<, ({ #'[, 'a, 0 }),
!                                   ({ #'[, 'b, 0}) }) )
  
          The given mapping 'map' is returned as an array of
          ({ key, data }) pairs, sorted by the keys.
diff -c efun.orig/trim efun/trim
*** efun.orig/trim	2009-10-09 16:04:55.000000000 +0000
--- efun/trim	2009-10-19 16:42:02.000000000 +0000
***************
*** 1,10 ****
  SYNOPSIS
!         #include <sys/strings.h>
  
!         string trim (string s)
!         string trim (string s, int where)
!         string trim (string s, int where, int ch)
!         string trim (string s, int where, string ch)
  
  DESCRIPTION
          Remove all leading and trailing characters <ch> from the string
--- 1,10 ----
  SYNOPSIS
!         #include <strings.h>
  
!         string trim(string s)
!         string trim(string s, int where)
!         string trim(string s, int where, int ch)
!         string trim(string s, int where, string ch)
  
  DESCRIPTION
          Remove all leading and trailing characters <ch> from the string
***************
*** 19,25 ****
            TRIM_RIGHT (2):      remove the trailing characters
            TRIM_BOTH  (3 or 0): remove both leading and trailing characters
  
! EXAMPLE
          trim("   1234   ")                  --> "1234"
          trim("   1234   ", TRIM_RIGHT)      --> "   1234"
          trim("   1234   ", TRIM_BOTH, " 1") --> "234"
--- 19,25 ----
            TRIM_RIGHT (2):      remove the trailing characters
            TRIM_BOTH  (3 or 0): remove both leading and trailing characters
  
! EXAMPLES
          trim("   1234   ")                  --> "1234"
          trim("   1234   ", TRIM_RIGHT)      --> "   1234"
          trim("   1234   ", TRIM_BOTH, " 1") --> "234"
diff -c efun.orig/typeof efun/typeof
*** efun.orig/typeof	2009-10-09 16:04:55.000000000 +0000
--- efun/typeof	2009-10-19 20:14:07.000000000 +0000
***************
*** 1,12 ****
  SYNOPSIS
          int typeof(mixed)
  
  DESCRIPTION
          Returns a code for the type of the argument, as defined in
!         <sys/lpctypes.h>
  
  HISTORY
!         Introduced in 3.2@63
  
  SEE ALSO
          get_type_info(E), intp(E), objectp(E), floatp(E), pointerp(E),
--- 1,14 ----
  SYNOPSIS
+         #include <lpctypes.h>
+ 
          int typeof(mixed)
  
  DESCRIPTION
          Returns a code for the type of the argument, as defined in
!         <lpctypes.h>.
  
  HISTORY
!         Introduced in 3.2@63.
  
  SEE ALSO
          get_type_info(E), intp(E), objectp(E), floatp(E), pointerp(E),
diff -c efun.orig/unbound_lambda efun/unbound_lambda
*** efun.orig/unbound_lambda	2009-10-09 16:04:55.000000000 +0000
--- efun/unbound_lambda	2009-10-18 21:30:54.000000000 +0000
***************
*** 18,24 ****
          or apply(), the second arg forms the code of the closure.
  
  HISTORY
!         Introduced in 3.2@82
  
  SEE ALSO
          closures(LPC), lambda(E), apply(E), funcall(E), bind_lambda(E)
--- 18,24 ----
          or apply(), the second arg forms the code of the closure.
  
  HISTORY
!         Introduced in 3.2@82.
  
  SEE ALSO
          closures(LPC), lambda(E), apply(E), funcall(E), bind_lambda(E)
diff -c efun.orig/unique_array efun/unique_array
*** efun.orig/unique_array	2009-10-09 16:04:55.000000000 +0000
--- efun/unique_array	2009-10-15 21:33:30.000000000 +0000
***************
*** 29,35 ****
                ....
             ({ SameM:1, SameM:2, ... SameM:N }) })
  
! EXAMPLE
          mixed *arr;
          arr=unique_array(users(), "_query_level", -1);
  
--- 29,35 ----
                ....
             ({ SameM:1, SameM:2, ... SameM:N }) })
  
! EXAMPLES
          mixed *arr;
          arr=unique_array(users(), "_query_level", -1);
  
diff -c efun.orig/unmkmapping efun/unmkmapping
*** efun.orig/unmkmapping	2009-10-09 16:04:55.000000000 +0000
--- efun/unmkmapping	2009-10-18 21:08:39.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         mixed* unmkmapping(mapping map)
  
  DESCRIPTION
          Take mapping <map> and return an array of arrays with the keys
--- 1,5 ----
  SYNOPSIS
!         mixed * unmkmapping(mapping map)
  
  DESCRIPTION
          Take mapping <map> and return an array of arrays with the keys
***************
*** 17,23 ****
  
          holds.
  
! EXAMPLE
          mapping m = ([ 1:10;20, 2:11;21 ]);
          unmkmapping(m)
            --> returns ({ ({1, 2}), ({ 10, 11 }), ({ 20, 21 }) })
--- 17,23 ----
  
          holds.
  
! EXAMPLES
          mapping m = ([ 1:10;20, 2:11;21 ]);
          unmkmapping(m)
            --> returns ({ ({1, 2}), ({ 10, 11 }), ({ 20, 21 }) })
diff -c efun.orig/users efun/users
*** efun.orig/users	2009-10-09 16:04:55.000000000 +0000
--- efun/users	2009-10-18 21:31:02.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         object *users(void)
  
  DESCRIPTION
          Return an array containing all interactive users.
--- 1,5 ----
  SYNOPSIS
!         object * users(void)
  
  DESCRIPTION
          Return an array containing all interactive users.
diff -c efun.orig/utime efun/utime
*** efun.orig/utime	2009-10-09 16:04:55.000000000 +0000
--- efun/utime	2009-10-18 21:09:12.000000000 +0000
***************
*** 1,5 ****
  SYNOPSIS
!         int* utime()
  
  DESCRIPTION
           Return the time since 1. Jan 1970, 00:00:00 GMT in microsecond
--- 1,5 ----
  SYNOPSIS
!         int * utime()
  
  DESCRIPTION
           Return the time since 1. Jan 1970, 00:00:00 GMT in microsecond
***************
*** 9,15 ****
             int[0]: number of seconds elapsed
             int[1]: number of microseconds within the current second.
  
! EXAMPLE
          write(ctime(utime())+"\n");
  
          Print out the current date and time.
--- 9,15 ----
             int[0]: number of seconds elapsed
             int[1]: number of microseconds within the current second.
  
! EXAMPLES
          write(ctime(utime())+"\n");
  
          Print out the current date and time.
diff -c efun.orig/variable_exists efun/variable_exists
*** efun.orig/variable_exists	2009-10-09 16:04:55.000000000 +0000
--- efun/variable_exists	2009-10-19 16:42:45.000000000 +0000
***************
*** 1,8 ****
  SYNOPSIS
          #include <functionlist.h>
  
!         string variable_exists (string str [, int flags])
!         string variable_exists (string str , object ob, [, int flags])
  
  DESCRIPTION
          Look up a variable <str> in the current object, respectively
--- 1,10 ----
  SYNOPSIS
          #include <functionlist.h>
  
!         string variable_exists(string str)
!         string variable_exists(string str, int flags)
!         string variable_exists(string str, object ob)
!         string variable_exists(string str, object ob, int flags)
  
  DESCRIPTION
          Look up a variable <str> in the current object, respectively
diff -c efun.orig/variable_list efun/variable_list
*** efun.orig/variable_list	2009-10-09 16:04:55.000000000 +0000
--- efun/variable_list	2009-10-19 16:43:00.000000000 +0000
***************
*** 1,8 ****
  NAME
!         #include <sys/functionlist.h>
!         #include <sys/lpctypes.h>
  
!         mixed *variable_list (object ob, int flags = RETURN_FUNCTION_NAME)
  
  DESCRIPTION
          Return an array with information about <ob>s variables. For
--- 1,8 ----
  NAME
!         #include <functionlist.h>
!         #include <lpctypes.h>
  
!         mixed * variable_list(object ob, int flags)
  
  DESCRIPTION
          Return an array with information about <ob>s variables. For
***************
*** 10,16 ****
          stored in the result array conveying in this order:
            - the name of the variable
            - the variable flags (see below)
!           - the return type (listed in mudlib/sys/lpctypes.h)
            - the value of the variable
  
          <ob> may be given as true object or as a filename. In the latter
--- 10,16 ----
          stored in the result array conveying in this order:
            - the name of the variable
            - the variable flags (see below)
!           - the return type (listed in <lpctypes.h>)
            - the value of the variable
  
          <ob> may be given as true object or as a filename. In the latter
***************
*** 22,28 ****
          <flags> determines both which information is returned for every
          variable, and which variables should be considered at all.
          Its value is created by bin-or'ing together following flags from
!         mudlib/sys/functionlist.h:
  
            Control of returned information:
              RETURN_FUNCTION_NAME    include the variable name
--- 22,28 ----
          <flags> determines both which information is returned for every
          variable, and which variables should be considered at all.
          Its value is created by bin-or'ing together following flags from
!         <functionlist.h>:
  
            Control of returned information:
              RETURN_FUNCTION_NAME    include the variable name
***************
*** 45,54 ****
              TYPE_MOD_NO_MASK    variable is nomask
              TYPE_MOD_PUBLIC     variable is public
  
!         All these flags are defined in mudlib/sys/functionlist.h, which
!         should be copied into an accessible place in the mudlib. The
!         return types are defined in mudlib/sys/lpctypes.h which also
!         should be copied into the mudlib.
  
  HISTORY
          Introduced in LDMud 3.2.10.
--- 45,52 ----
              TYPE_MOD_NO_MASK    variable is nomask
              TYPE_MOD_PUBLIC     variable is public
  
!         All these flags are defined in <functionlist.h>, the 
!         return types are defined in <lpctypes.h>.
  
  HISTORY
          Introduced in LDMud 3.2.10.
diff -c efun.orig/widthof efun/widthof
*** efun.orig/widthof	2009-10-09 16:04:55.000000000 +0000
--- efun/widthof	2009-10-19 16:43:08.000000000 +0000
***************
*** 1,11 ****
  SYNOPSIS
!         int widthof (mapping map)
  
  DESCRIPTION
          Returns the number of values per key of mapping <map>.
          If <map> is 0, the result is 0.
  
! EXAMPLE
          mapping m = ([ "foo": 1,2 ]);
          widthof(m)  --> returns 2
  
--- 1,11 ----
  SYNOPSIS
!         int widthof(mapping map)
  
  DESCRIPTION
          Returns the number of values per key of mapping <map>.
          If <map> is 0, the result is 0.
  
! EXAMPLES
          mapping m = ([ "foo": 1,2 ]);
          widthof(m)  --> returns 2
  
diff -c efun.orig/wizlist_info efun/wizlist_info
*** efun.orig/wizlist_info	2009-10-09 16:04:55.000000000 +0000
--- efun/wizlist_info	2009-10-19 16:43:17.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         #include <sys/wizlist.h>
  
!         mixed *wizlist_info()
  
  DESCRIPTION
          Returns an array with the interesting entries of the wizlist.
--- 1,7 ----
  SYNOPSIS
!         #include <wizlist.h>
  
!         mixed * wizlist_info()
  
  DESCRIPTION
          Returns an array with the interesting entries of the wizlist.
***************
*** 24,30 ****
            int    w[WL_STRUCT_TOTAL]  = Total size of structs in elements.
            mixed  w[WL_EXTRA]         = Extra wizlist-info if set.
  
- 
          The 'weighted' entries decay every hour by 10%.
  
  HISTORY
--- 24,29 ----
diff -c efun.orig/xml_generate efun/xml_generate
*** efun.orig/xml_generate	2009-10-09 16:04:55.000000000 +0000
--- efun/xml_generate	2009-10-18 21:39:31.000000000 +0000
***************
*** 36,46 ****
          The function is available only if the driver is compiled with Iksemel
          support. In that case, __XML_DOM__ is defined.
  
! EXAMPLE
          xml_generate(({ "abc", 0, 0 })) -> "<abc/>"
          xml_generate(({ "abc", ([ "xyz" : "cde" ]), 0 })) -> "<abc xyz="cde"/>"
  
!         mixed* xml = ({ "book"
                        , ([ "language" : "common" ])
                        , ({ ({ "title"
                              , 0
--- 36,47 ----
          The function is available only if the driver is compiled with Iksemel
          support. In that case, __XML_DOM__ is defined.
  
! 
! EXAMPLES
          xml_generate(({ "abc", 0, 0 })) -> "<abc/>"
          xml_generate(({ "abc", ([ "xyz" : "cde" ]), 0 })) -> "<abc xyz="cde"/>"
  
!         mixed *xml = ({ "book"
                        , ([ "language" : "common" ])
                        , ({ ({ "title"
                              , 0
diff -c efun.orig/xml_parse efun/xml_parse
*** efun.orig/xml_parse	2009-10-09 16:04:55.000000000 +0000
--- efun/xml_parse	2009-10-18 21:09:27.000000000 +0000
***************
*** 3,9 ****
  SYNOPSIS
          #include <xml.h>
  
!         mixed* xml_parse(string xml)
  
  DESCRIPTION
          Parses the given string <xml> as a XML conform string. The string must
--- 3,9 ----
  SYNOPSIS
          #include <xml.h>
  
!         mixed * xml_parse(string xml)
  
  DESCRIPTION
          Parses the given string <xml> as a XML conform string. The string must
***************
*** 36,42 ****
          The function is available only if the driver is compiled with Iksemel
          support. In that case, __XML_DOM__ is defined. 
  
! EXAMPLE
          xml_parse("<abc/>")           -> ({ "abc", 0, 0 })
          xml_parse("<abc xyz="cde"/>") -> ({ "abc", ([ "xyz" : "cde" ]), 0 })
  
--- 36,43 ----
          The function is available only if the driver is compiled with Iksemel
          support. In that case, __XML_DOM__ is defined. 
  
! 
! EXAMPLES
          xml_parse("<abc/>")           -> ({ "abc", 0, 0 })
          xml_parse("<abc xyz="cde"/>") -> ({ "abc", ([ "xyz" : "cde" ]), 0 })
  
diff -c efun.orig/xor_bits efun/xor_bits
*** efun.orig/xor_bits	2009-10-09 16:04:55.000000000 +0000
--- efun/xor_bits	2009-10-19 20:49:24.000000000 +0000
***************
*** 1,7 ****
  SYNOPSIS
!         string xor_bits (string str1, string str2)
  
! DESTRIPTION
          <str1> and <str2> are both bitstrings. The result of the function
          is a bitstring with the binary-xor of <str1> and <str2>,
          ie. a string in which a bit is set only if the corresponding
--- 1,7 ----
  SYNOPSIS
!         string xor_bits(string str1, string str2)
  
! DESCRIPTION
          <str1> and <str2> are both bitstrings. The result of the function
          is a bitstring with the binary-xor of <str1> and <str2>,
          ie. a string in which a bit is set only if the corresponding
diff-doc-efun-en.patch (197,133 bytes)   

2009-10-19 17:05

 

diff-doc-efun-de.patch (399,246 bytes)

zesstra

2009-10-21 14:21

administrator   ~0001544

Fixed in r2772 (trunk-3.3) and r2773 (trunk). Thanks Coogan. :-)

Issue History

Date Modified Username Field Change
2009-10-15 17:51 Coogan New Issue
2009-10-15 17:51 Coogan File Added: diff-doc-efun.patch
2009-10-15 18:05 Coogan File Added: diff-doc-efun-2.patch
2009-10-17 06:41 zesstra Note Added: 0001526
2009-10-17 06:41 zesstra Assigned To => zesstra
2009-10-17 06:41 zesstra Status new => assigned
2009-10-17 06:42 zesstra Note Added: 0001527
2009-10-19 17:04 Coogan Note Added: 0001536
2009-10-19 17:04 Coogan File Added: diff-doc-efun-en.patch
2009-10-19 17:05 Coogan File Added: diff-doc-efun-de.patch
2009-10-21 14:21 zesstra Note Added: 0001544
2009-10-21 14:21 zesstra Status assigned => resolved
2009-10-21 14:21 zesstra Fixed in Version => 3.3.720
2009-10-21 14:21 zesstra Resolution open => fixed
2009-10-21 14:21 zesstra File Deleted: diff-doc-efun.patch
2009-10-21 14:22 zesstra File Deleted: diff-doc-efun-2.patch
2011-02-23 23:22 zesstra Target Version => 3.3.720