Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/obj/tools/MGtool/man.d/xcall b/obj/tools/MGtool/man.d/xcall
new file mode 100644
index 0000000..43e21ea
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xcall
@@ -0,0 +1,21 @@
+SYNOPSIS
+ xcall <object>-><function>(<expression>)
+
+DESCRIPTION
+ Calls the lfun <function> of the <object> with <expression> as
+ argument. The <properties.h> are included. Three objects are allready
+ defined on invokation. "me" represents the onwer of the Xtool. "here"
+ is the current room and "obj" is the object which lfun is called.
+ To use the object access syntax described above, a function called
+ "get(string)" can be used. If the call returned an object, the variable
+ "$result" will be set to this object.
+ xcall includes a private ~/.xtool.h, if it exists, to support user
+ defined macros.
+
+EXAMPLES
+ xcall $me->QueryProp(P_LONG)
+ xcall /std/thing#145->SetProp(P_SHORT,"a small thing")
+ xcall /secure/master->add_domain_wiz("hell", "hyp")
+ xcall $me->move(get("^deepthought"),"go")
+ (the last one uses the function get() to find the room where our god is)
+
diff --git a/obj/tools/MGtool/man.d/xcallouts b/obj/tools/MGtool/man.d/xcallouts
new file mode 100644
index 0000000..79adfa6
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xcallouts
@@ -0,0 +1,16 @@
+SYNOPSIS
+ xcallouts [search pattern]
+ or
+ xcallouts (when writing to a pipe)
+
+DESCRIPTION
+ With no argument it shows all your callouts. With a regexp as argument,
+ all matching callouts will be printed. When writing to a pipe, all
+ call_outs will be printed and the search pattern is not allowed.
+
+EXAMPLES
+ xcallouts obj Show all callouts with the string "obj" in it.
+ xcallouts . Show all callouts. Please never do this if it isn't
+ really neccessary. It just costs time - and what do you
+ want to do with this mass of information?
+
diff --git a/obj/tools/MGtool/man.d/xclean b/obj/tools/MGtool/man.d/xclean
new file mode 100644
index 0000000..dcc488e
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xclean
@@ -0,0 +1,12 @@
+SYNOPSIS
+ xclean [object]
+
+DESCRIPTION
+ Clean the inventory of the object, but don't destruct any living.
+ With no argument the current room will be cleaned. The objects
+ are removed with the lfun remove().
+
+EXAMPLE
+ xclean $me.bag
+ Clean my bag.
+
diff --git a/obj/tools/MGtool/man.d/xclone b/obj/tools/MGtool/man.d/xclone
new file mode 100644
index 0000000..00c1b7a
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xclone
@@ -0,0 +1,13 @@
+SYNOPSIS
+ xclone <filename>
+
+DESCRIPTION
+ Clones an object. On error, the error log file will be printed.
+ Moves the object (if possible) into your inventory. If the object
+ has been cloned successfully, the variable "$clone" will be set,
+ to make sure we don't lose the object out of sight :)
+
+EXAMPLE
+ xclone /std/thing
+ xcall $clone->SetShort("a BIG thing!");
+
diff --git a/obj/tools/MGtool/man.d/xdbg b/obj/tools/MGtool/man.d/xdbg
new file mode 100644
index 0000000..5609f2f
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xdbg
@@ -0,0 +1,14 @@
+SYNOPSIS
+ xdbg <object>
+
+DESCRIPTION
+ Prints out debug information buy using the efun debug_info().
+ Not all of these information is useful but it gives you information
+ of how many variables, functions, inherited objetcs and so on a object
+ has. It also shows if an object is living, if its heart beat is turned
+ on, when the next call of reset() will be (but don't take this value
+ not too seriously) etc.
+
+EXAMPLE
+ xdbg $me
+
diff --git a/obj/tools/MGtool/man.d/xdclean b/obj/tools/MGtool/man.d/xdclean
new file mode 100644
index 0000000..79f9093
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xdclean
@@ -0,0 +1,6 @@
+SYNOPSIS
+ xdclean <object>
+
+DESCRIPTION
+ Same as xclean, but makes a deep clean.
+
diff --git a/obj/tools/MGtool/man.d/xddes b/obj/tools/MGtool/man.d/xddes
new file mode 100644
index 0000000..a235645
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xddes
@@ -0,0 +1,6 @@
+SYNOPSIS
+ xddes <object>
+
+DESCRIPTION
+ Same as xdes, but makes a deep destruct.
+
diff --git a/obj/tools/MGtool/man.d/xdes b/obj/tools/MGtool/man.d/xdes
new file mode 100644
index 0000000..17bf984
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xdes
@@ -0,0 +1,8 @@
+SYNOPSIS
+ xdes <object>
+
+DESCRIPTION
+ Destruct an object using by first calling the lfun remove() of the
+ object and if its still "alive" then destruct it with the efun
+ destruct().
+
diff --git a/obj/tools/MGtool/man.d/xdlook b/obj/tools/MGtool/man.d/xdlook
new file mode 100644
index 0000000..6f7772f
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xdlook
@@ -0,0 +1,6 @@
+SYNOPSIS
+ xdlook <object>
+
+DESCRIPTION
+ Same as look, but takes a deep look at the object.
+
diff --git a/obj/tools/MGtool/man.d/xdo b/obj/tools/MGtool/man.d/xdo
new file mode 100644
index 0000000..cefa5f1
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xdo
@@ -0,0 +1,14 @@
+SYNOPSIS
+ xdo [<number1>#]<command1>[;[<number2>#]<command2>] ...
+
+DESCRIPTION
+ Perform multiple command execution.
+
+ Examples:
+ xdo 5#smile (smile 5 times)
+
+ xdo l;i (look around in the room and then in your inventory)
+
+ xdo s;9#w;3#n;kill shaman;get sword from corpse;3#s;9#e;n;...
+ (you know this one :)
+
diff --git a/obj/tools/MGtool/man.d/xdupdate b/obj/tools/MGtool/man.d/xdupdate
new file mode 100644
index 0000000..b3752b9
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xdupdate
@@ -0,0 +1,8 @@
+SYNOPSIS
+ xdupdate <filename>
+
+DESCRIPTION
+ Update an object including all its inherited objects.
+
+EXAMPLE
+ xdupdate /std/player.c
diff --git a/obj/tools/MGtool/man.d/xeval b/obj/tools/MGtool/man.d/xeval
new file mode 100644
index 0000000..f532bdf
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xeval
@@ -0,0 +1,18 @@
+SYNOPSIS
+ xeval <expression>
+
+DESCRIPTION
+ Execute an LPC expression. Inside the <expression>, "me" and "here" are
+ predefined objects (guess for what :). Here we can also use the function
+ "get()" to find an object using the object access syntax. If the
+ Expression returns an object the variable "$result" will be set to this.
+ xeval includes a private ~/.xtool.h, if it exists, to support user
+ defined macros.
+
+
+EXAMPLES
+ Just do it!
+ xeval users()
+ xeval getuid(me)
+ xeval get("$me.xtool")
+
diff --git a/obj/tools/MGtool/man.d/xforall b/obj/tools/MGtool/man.d/xforall
new file mode 100644
index 0000000..17558f4
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xforall
@@ -0,0 +1,29 @@
+SYNOPSIS
+ xforall <filepattern> <command>
+
+DESCRIPTION
+ Execute <command> for all matching files. The <command> string can
+ contain replacment marks. Currently there are five of these marks:
+ - "!!" this mark stands for the full file name.
+ - "!e" stands for the extension of the file name.
+ - "!f" stands for the file name without extension and directory name.
+ - "!h" stands for the full directory name of the files.
+ - "!r" stands for the full file name without file extension.
+ - "!t" stands for the file name without the directory name.
+
+ If the full file name would be "/directory/file.ext" then
+ "!!" equals "/directory/file.ext"
+ "!e" equals "ext"
+ "!f" equals "file"
+ "!h" equals "/directory"
+ "!r" equals "/directory/file"
+ "!t" equals "file.ext"
+
+EXAMPLES
+ xforall ~/room/*.c xcall !r->reset();
+ Call the reset() function in all your rooms.
+
+ xforall ~/obj/* mv !! !h/oldobj/!f.!e.old
+ Move all files from your "obj" dir into the "obj/oldobj" dir and change
+ the extensions.
+
diff --git a/obj/tools/MGtool/man.d/xgoto b/obj/tools/MGtool/man.d/xgoto
new file mode 100644
index 0000000..df4ccba
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xgoto
@@ -0,0 +1,16 @@
+SYNOPSIS
+ xgoto [object]
+
+DESCRIPTION
+ Go inside <object>. Without an argument you will leave into your
+ workroom. If <object> is a living thing, goto it's environment
+ (never tested until now, when going to a living thing, inside
+ a living thing :)
+
+EXAMPLES
+ xgoto /room/shop
+ xgoto shop (both are the same, because if there is no shop in
+ the current directory, a "/room/" will be appended
+ to the argument)
+ xgoto public enemy (do this only when you are really bored)
+
diff --git a/obj/tools/MGtool/man.d/xgrep b/obj/tools/MGtool/man.d/xgrep
new file mode 100644
index 0000000..8914fcb
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xgrep
@@ -0,0 +1,25 @@
+SYNOPSIS
+ xgrep [-iv] <regexp> <filepattern>
+ or
+ xgrep [-iv] <regexp> (when reading from a pipe)
+
+DESCRIPTION
+ Search for the regular expression <regexp> in all files matching the
+ <filepattern>.
+ Works simular to the Unix command "grep". The reslut will be written
+ to <STDOUT> and may be piped into another command.
+
+OPTIONS
+ -v reverts the sense of <regexp>.
+
+ -i matches case-insensitive
+
+EXAMPLES
+ xgrep Deepthought /log/SHOUTS
+ This will search throught the shout log file for any line which has
+ the word "Deepthought" in it.
+
+ xgrep create\(\) *.c
+ This will search for all lines of all lpc code files in the current dir
+ which have the function "create()" defined.
+
diff --git a/obj/tools/MGtool/man.d/xhbeats b/obj/tools/MGtool/man.d/xhbeats
new file mode 100644
index 0000000..3a897f3
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xhbeats
@@ -0,0 +1,18 @@
+SYNOPSIS
+ xhbeats [search pattern]
+ or
+ xhbeats (when writing to a pipe)
+
+DESCRIPTION
+ With no argument it shows all your objects which have a running heart
+ beat. With a regexp as argument, all matching objects will be printed.
+ When writing to a pipe, all hearbeats will be printed and a search
+ pattern is not allowed.
+
+EXAMPLES
+ xhbeats obj Show all objects which have a running heart beat at the
+ object names with the string "obj" in it.
+ xhbeats . Show all callouts. Please don't do this if it isn't
+ really neccessary. It just costs time - and what do you
+ want to do with this information?
+
diff --git a/obj/tools/MGtool/man.d/xhead b/obj/tools/MGtool/man.d/xhead
new file mode 100644
index 0000000..5801055
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xhead
@@ -0,0 +1,11 @@
+SYNOPSIS
+ xhead <-#> <file>
+ or
+ xhead <-#> (when reading from a pipe)
+
+DESCRIPTION
+ xhead prints the first part of a given file; It reads from a pipe
+ if no file is given.
+
+EXAMPLES
+ xhead -10 workroom.c prints the first 10 lines of the file workroom.c.
diff --git a/obj/tools/MGtool/man.d/xhelp b/obj/tools/MGtool/man.d/xhelp
new file mode 100644
index 0000000..b0aa7d4
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xhelp
@@ -0,0 +1,6 @@
+SYNOPSIS
+ xhelp
+
+DESCRIPTION
+ Show the main help file.
+
diff --git a/obj/tools/MGtool/man.d/xids b/obj/tools/MGtool/man.d/xids
new file mode 100644
index 0000000..67ef761
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xids
@@ -0,0 +1,6 @@
+SYNOPSIS
+ xids <object>
+
+DESCRIPTION
+ Show the user id and the effective user id of the <object>.
+
diff --git a/obj/tools/MGtool/man.d/xinherit b/obj/tools/MGtool/man.d/xinherit
new file mode 100644
index 0000000..ef02f3e
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xinherit
@@ -0,0 +1,16 @@
+SYNOPSIS
+ xinherit <object> [function]
+
+DESCRIPTION
+ Show the inheritance tree of an object and if optional specified
+ display all occurencies of the function.
+ The inheritance tree is perhaps not the one you expect to see. In
+ fact its the one the gamedriver really uses. That means if for
+ example two object inherit each other or in any other case of recursion
+ it will not be shown. Or if an object A inherits object B and C
+ and object B also inherits object C, the object C will only displayed
+ once (because the gamedriver also inherits object once).
+
+EXAMPLE
+ xinherit $me
+
diff --git a/obj/tools/MGtool/man.d/xlag b/obj/tools/MGtool/man.d/xlag
new file mode 100644
index 0000000..fd28114
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xlag
@@ -0,0 +1,16 @@
+SYNOPSIS
+ xlag
+
+DESCRIPTION
+ xlag displays the current system LAG by comparing the actual
+ processed heartbeats with the initial heartbeat rate (1/2s).
+ Values will we displayed for the last minute, the last 15 minutes
+ and the last hour.
+
+EXAMPLE
+ Letzte 60 min: ####### (7.2%)
+ Letzte 15 min: ######## (8.3%)
+ Letzte Minute: ######### (9.4%)
+
+AVAILABILITY
+ xlag requires /players/kirk/obj/lag-o-daemon.c to be loaded.
diff --git a/obj/tools/MGtool/man.d/xload b/obj/tools/MGtool/man.d/xload
new file mode 100644
index 0000000..00db877
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xload
@@ -0,0 +1,15 @@
+SYNOPSIS
+ xload <filename>
+
+DESCRIPTION
+ Update and load the object specified by the filename. If you update
+ your current environment, all players will be moved silently into
+ "/std/void" and after successful updating and loading back into it.
+
+EXAMPLES
+ xload $here
+ Update and reload the current room (but without a trip into the void :).
+
+ xload obj/little_thing.c
+ Update and load it.
+
diff --git a/obj/tools/MGtool/man.d/xlook b/obj/tools/MGtool/man.d/xlook
new file mode 100644
index 0000000..259bc9e
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xlook
@@ -0,0 +1,7 @@
+SYNOPSIS
+ xlook [object]
+
+DESCRIPTION
+ Look at the object. If the argument is ommitted, look inside the
+ current room.
+
diff --git a/obj/tools/MGtool/man.d/xlpc b/obj/tools/MGtool/man.d/xlpc
new file mode 100644
index 0000000..8f471ed
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xlpc
@@ -0,0 +1,20 @@
+SYNOPSIS
+ xlpc <lpc code>
+
+DESCRIPTION
+ Execute pure LPC code. "me" and "here" are predefined objects. Also the
+ <properties.h> will be included. The function "get(string)" can be used
+ for accessing objects. If the execution returns an object the variable
+ "$result" will set to this object.
+
+EXAMPLES
+ xlpc int i;object *o;o=users();for(i=0;i<sizeof(o);i++)o[i]->
+ SetProp(P_FROG,1);
+ (Let all users be slimy frogs :)
+
+ xlpc int i;object *o;o=users();for(i=0;i<sizeof(o);i++)
+ o[i]->SetProp(P_TITLE,get("$me")->QueryProp(P_TITLE));
+ (Give all users your prefered title. Take a look of the use of get().)
+
+ Both commands must be written in one line of course!
+
diff --git a/obj/tools/MGtool/man.d/xman b/obj/tools/MGtool/man.d/xman
new file mode 100644
index 0000000..9b56ad1
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xman
@@ -0,0 +1,17 @@
+SYNOPSIS
+ xman <topic>
+
+DESCRIPTION
+ Searches in some special directories under /doc for the given topic
+ or command. If there are two equal topics in different directories
+ the one found first will be printed.
+
+EXAMPLES
+ xman xman
+ xman xforall
+ xman efun/destruct
+ xman w/destruct
+ xman move
+ xman thing
+ xman domains
+
diff --git a/obj/tools/MGtool/man.d/xmore b/obj/tools/MGtool/man.d/xmore
new file mode 100644
index 0000000..bcd9250
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xmore
@@ -0,0 +1,12 @@
+SYNOPSIS
+ xmore <filename> [start]
+
+DESCRIPTION
+ Prints out a file and if a starting line is given, then the printing
+ will start there. On ansi or vt100 terminals the status line will be
+ overstroked to give a harmonic view of the file.
+
+EXAMPLES
+ xmore ~/workroom.c
+ xmore $here (this will show the source of the current room)
+
diff --git a/obj/tools/MGtool/man.d/xmove b/obj/tools/MGtool/man.d/xmove
new file mode 100644
index 0000000..b4c0aec
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xmove
@@ -0,0 +1,13 @@
+SYNOPSIS
+ xmove <object> into <object>
+
+DESCRIPTION
+ Moves one object into another or give the reason why the move failed.
+
+EXAMPLES
+ xmove $clone into $me
+ If you cloned an object with xclone but the object couldn't be moved
+ then this can be used to get the reason for it.
+
+ xmove hyp into ^wurzel (this is a silent form of going to other players)
+
diff --git a/obj/tools/MGtool/man.d/xmsg b/obj/tools/MGtool/man.d/xmsg
new file mode 100644
index 0000000..175b780
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xmsg
@@ -0,0 +1,11 @@
+SYNOPSIS
+ xmsg [to <object>|all]
+
+DESCRIPTION
+ Send a message. If no arguments are given the message will be send into
+ the room. If second argument is "to" then send the message to the
+ specified <object>. If second argument is "all" then send the message to
+ all players in the mud.
+ This command can be used to send text via cut&paste to someone without
+ putting a "say", "tell" or "shout" infront of each line.
+
diff --git a/obj/tools/MGtool/man.d/xmtp b/obj/tools/MGtool/man.d/xmtp
new file mode 100644
index 0000000..9d74a9c
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xmtp
@@ -0,0 +1,24 @@
+SYNOPSIS
+ xmtp [options] <directory> <file>
+
+DESCRIPTION
+ Create a script file for transfering complete directories with mtp.
+ If your mtp needs extra arguments (except of the -r option which
+ stands for reading files) for example the -g option then you can add
+ then to the command.
+ This command works recursively and can cause a to deep recursion or
+ a too long evaluation error when trying to make a script for huge
+ directories like "/players" for example.
+ If the <file> allready exists it will not be removed instead the script
+ will simply added to the end of the file.
+
+EXAMPLE
+ xmtp -gtubmud /basic ~/basic.csh
+ Create a script file "basic.csh" to transfer the whole content of the
+ "/basic" directory.
+
+ On your host you then just create a directory (normally with the same
+ name give to the xmtp command), change into the directory and read
+ the script file with "mtp -r basic.csh". Then just execute the script
+ with "csh" or "sh".
+
diff --git a/obj/tools/MGtool/man.d/xproc b/obj/tools/MGtool/man.d/xproc
new file mode 100644
index 0000000..16d0aa1
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xproc
@@ -0,0 +1,13 @@
+SYNOPSIS
+ xproc [-c] [-l] [-m] [-u] [-v]
+
+DESCRIPTION
+ xproc prints information from the /proc filesystem to the screen.
+ The format is totally unformatted! (I can't help it for now...)
+ Without any option, it display the machines load averages.
+
+ -c: cpu information
+ -l: load averages
+ -m: memory usage
+ -u: machine's uptime
+ -v: kernel version
diff --git a/obj/tools/MGtool/man.d/xprops b/obj/tools/MGtool/man.d/xprops
new file mode 100644
index 0000000..f8f0dfe
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xprops
@@ -0,0 +1,15 @@
+SYNOPSIS
+ xprops [-f|-m] <object>
+
+DESCRIPTION
+ Prints out all properties of <object> which are currently defined
+ in /sys/properties.h.
+
+OPTIONS
+ -f List property flags verbose
+
+ -m List property methods
+
+EXAMPLE
+ xprops $me
+
diff --git a/obj/tools/MGtool/man.d/xscan b/obj/tools/MGtool/man.d/xscan
new file mode 100644
index 0000000..7f7b450
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xscan
@@ -0,0 +1,7 @@
+SYNOPSIS
+ xscan
+
+DESCRIPTION
+ Scan current room for netdead players and check variables.
+ (There will follow more checking routines like snoop, invis etc. :)
+
diff --git a/obj/tools/MGtool/man.d/xset b/obj/tools/MGtool/man.d/xset
new file mode 100644
index 0000000..cb7c66d
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xset
@@ -0,0 +1,15 @@
+SYNOPSIS
+ xset [$<name>=<object>]
+
+DESCRIPTION
+ Without an argument all current variable settings will be shown and
+ destructed objects removed from the list of variables.
+ With argument the specified variable will be set.
+
+EXAMPLES
+ xset $deep=deepthought
+ xset $xtool=$me.xtool
+ xset $god=$deep
+ xset $last_result=$result
+ xset $3=^$1.3
+
diff --git a/obj/tools/MGtool/man.d/xsh b/obj/tools/MGtool/man.d/xsh
new file mode 100644
index 0000000..1377992
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xsh
@@ -0,0 +1,12 @@
+SYNOPSIS
+ xsh <filename>
+
+DESCRIPTION
+ Read in a file and execute each line of it as a command given from the
+ keyboard.
+
+EXAMPLE
+ xsh ~/setup.xsh
+ Execute the file "~/setup.xsh". This way you can set up your aliases or
+ other parameters for other tools if the setting gone lost.
+
diff --git a/obj/tools/MGtool/man.d/xsort b/obj/tools/MGtool/man.d/xsort
new file mode 100644
index 0000000..dfea2da
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xsort
@@ -0,0 +1,11 @@
+SYNOPSIS
+ xsort [-r] <file>
+ or
+ xsort [-r] (when reading from a pipe)
+
+DESCRIPTION
+ xsort sort all lines of a given file in increasing/decreasing order.
+ If no file is given it reads from a pipe.
+
+EXAMPLES
+ xsort -r workroom.c sorts all lines of workroom.c in reverse order.
diff --git a/obj/tools/MGtool/man.d/xtail b/obj/tools/MGtool/man.d/xtail
new file mode 100644
index 0000000..44c2300
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xtail
@@ -0,0 +1,12 @@
+SYNOPSIS
+ xtail <-|+#> <file>
+ or
+ xtail <-|+#> (when reading from a pipe)
+
+DESCRIPTION
+ xtail prints the last part of a given file; It reads from a pipe
+ if no file is given.
+
+EXAMPLES
+ xtail -10 workroom.c prints the last 10 lines of the file workroom.c.
+ xtail +10 workroom.c prints all lines of workroom.c beginning at line 10.
diff --git a/obj/tools/MGtool/man.d/xtool b/obj/tools/MGtool/man.d/xtool
new file mode 100644
index 0000000..62d0614
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xtool
@@ -0,0 +1,45 @@
+SYNOPSIS
+ xtool [update|heart=<on|off>|first=<on|off>|protect=<on|off>|
+ invcheck=<on|off>|envcheck=<on|off>|ndcheck=<on|off>|
+ varcheck=<on|off>|short=<on|off>|echo=<on|off>|
+ more=<amount>|kill|news|save|load|reset]
+
+DESCRIPTION
+ This command is used to set some tool-specific behaviours.
+ - "update" clones a new Xtool and destructs the old one. This should
+ only be done when working on the source of the tool and to get a fast
+ update. Settings and aliases will be reached through the new clone.
+ - "heart=<on|off>" turns the heart beat of the tool on or off.
+ The heart beat is for a higher security and to keep the other checks
+ running. If you just want to use the Xtool as a passive tool without
+ any checks then turn the heart beat off.
+ - "first=<on|off>" turns the automatic moving into the pole position
+ of your inventory on or off. Turning it off, avoids struggle with
+ other tools which behave same, but also reduces security. The history
+ mechanism will also capture the less commands.
+ - "protect=<on|off>" turns on/off the protection mode of the Xtool.
+ It will protect you from forces of other wizards and of player objects
+ which try to move into your inventory.
+ - "invcheck=<on|off>" turns the automatic check of your inventory on or
+ off. If turned on, all new objects in your inventory will be reported.
+ - "envcheck=<on|off>" like "invcheck" but checks your environment, the
+ content of the current room.
+ - "ndcheck=<on|off>" sets the netdeadchecking mode of the Xtool.
+ - "short=<on|off>" turns displaying of short descriptions on or off.
+ This is to avoid to get on other wizards nerves, when they have a tool
+ that notifies inventory checks (like this tool does :). But the main
+ reason is to cope with bad short descriptions of objects. For
+ example if you want to destruct it a bug in the short desc. would
+ make it nearly impossible to do so.
+ - "more=<amount>" sets the amount of lines that will be displayed at one
+ time with the xmore command. Will be removed soon because there is a
+ player property called P_PAGESIZE to take care of it.
+ - "echo=<on|off>" turns the echoing of commands executed via alias,
+ history or multiple command execution on or off.
+ - "kill" destructs the Xtool and removes it from the autoload list.
+ - "news" show the news and changes of the Xtool.
+ - "save" saves the settings of the Xtool including the aliases into a
+ file.
+ - "load" restores the saved settings from the save file.
+ - "reset" resets the Xtool.
+
diff --git a/obj/tools/MGtool/man.d/xtrace b/obj/tools/MGtool/man.d/xtrace
new file mode 100644
index 0000000..1c05e94
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xtrace
@@ -0,0 +1,14 @@
+SYNOPSIS
+ xtrace <object>
+
+DESCRIPTION
+ Trace all function calls with arguments and their return values of
+ the specified object. Without any argument turns the tracing off again.
+
+EXAMPLE
+ xtrace $me.buggything
+ Lets debug an buggy object.
+
+ xtrace
+ Turn debugging off.
+
diff --git a/obj/tools/MGtool/man.d/xtrans b/obj/tools/MGtool/man.d/xtrans
new file mode 100644
index 0000000..e356d0a
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xtrans
@@ -0,0 +1,6 @@
+SYNOPSIS
+ xtrans <player>
+
+DESCRIPTION
+ Teleport <player> to you.
+
diff --git a/obj/tools/MGtool/man.d/xuclone b/obj/tools/MGtool/man.d/xuclone
new file mode 100644
index 0000000..341c825
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xuclone
@@ -0,0 +1,13 @@
+SYNOPSIS
+ xuclone <filename>
+
+DESCRIPTION
+ Updates & Clones an object. On error, the error log file will be
+ printed. Moves the object (if possible) into your inventory. If the
+ object has been cloned successfully, the variable "$clone" will be set,
+ to make sure we don't lose the object out of sight :)
+
+EXAMPLE
+ xuclone /std/thing
+ xcall $clone->SetShort("a BIG thing!");
+
diff --git a/obj/tools/MGtool/man.d/xupdate b/obj/tools/MGtool/man.d/xupdate
new file mode 100644
index 0000000..cab6567
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xupdate
@@ -0,0 +1,10 @@
+SYNOPSIS
+ xupdate <filename>
+
+DESCRIPTION
+ Update an object by first calling the lfun "remove()" of it and when
+ it still exists destruct it.
+
+EXAMPLE
+ xupdate obj/blub.c
+
diff --git a/obj/tools/MGtool/man.d/xwc b/obj/tools/MGtool/man.d/xwc
new file mode 100644
index 0000000..aa13147
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xwc
@@ -0,0 +1,22 @@
+SYNOPSIS
+ xwc [-clw] <file>
+ or
+ xwc [-clw] (when reading from a pipe)
+
+DESCRIPTION
+ xwc counts the number of bytes, whitespace-separated words, and new-
+ lines in a given file, or reading from a pipe. It prints one line
+ of counts, and if the file name was given as an argument, it prints
+ the filename following the counts. The counts are printed in the
+ order: lines, words, bytes.
+ By default, wc prints all three counts.
+
+OPTIONS:
+ -c print character count
+
+ -l print line count
+
+ -w print word count
+
+EXAMPLES
+
diff --git a/obj/tools/MGtool/man.d/xwho b/obj/tools/MGtool/man.d/xwho
new file mode 100644
index 0000000..1e9fbd6
--- /dev/null
+++ b/obj/tools/MGtool/man.d/xwho
@@ -0,0 +1,17 @@
+SYNOPSIS
+ xwho [mail|ip|race|guild|domain|stats|cmdavg]
+
+DESCRIPTION
+ Without any argument this command behaves like the normal people
+ command. With the argument "mail" it will list all players with their
+ email address. With the argument "ip" it will list all players with
+ their host name and ip number. If the argument is "race" or "guild"
+ you will get a list of all players with these attributes. "domain"
+ will show the domain(s) of the current players. And with "stats" it
+ will print some stats information of all players.
+ The argument "cmdavg" list the value of _query_command_average()
+ for every user sorted in increasing order.
+
+EXAMPLES
+ xwho
+ xwho ip