~name{~enUS{gritty,guts,weird,low-level,low level,recompile}}
~keywords{admin}
~desc{
  ~enUS{

There are a number of commands that deal with LPC programs
individually.  Note that in LPC, "program" is synonymous with "source
LPC file", a single LPC file like /usr/System/obj/wiztool.c or
/usr/common/lib/intl_phrase.c.

Commands and help topics include:

%history         Shows your code/clone/compile history
%clear           Clears your code/clone/compile history

%clone           Clones the referenced object
%destruct        Destructs the referenced object
%compile         Compiles the referenced object

%od_report       Report on an LPC object
%list_dest       List destroyed LPC objects
%full_rebuild    Recompiles all objects

%code            The code command runs arbitrary DGD code
cd               Various file commands, like in DOS or Unix
%ed              The DGD editor.

%access          Show admins' permissions
%rsrc            Shows resource usage
%quota           Shows quotas and resource usage

%grant           Grant an administrator permissions
%ungrant         Remove an administrator's permissions

daemons          Daemons providing MUD services

}}


~name{~enUS{history,%history,command history,compile history,clone history,
            code history}}
~keywords{admin}
~desc{
  ~enUS{

The %history command by itself shows the history of values returned by
%code, %compile and %clone commands.  You can also follow it with a
number to show just that history value.  Most of the values listed
will be shown by object type rather than specific value.  They can be
further referenced in several low-level MUDLib commands as $0, $1, $2,
etc.

}}


~name{~enUS{clear, %clear, clear history}}
~keywords{admin}
~desc{
  ~enUS{

The %clear command clears the command history.  See %history.

}}


~name{~enUS{%clone, clone, clone object}}
~keywords{admin}
~desc{
  ~enUS{

The %clone command clones an object and puts it into your command
history.  Be careful of causing memory leaks!  The cloned object may
be specified by object name or by history number.

See %history.

}}


~name{~enUS{%destruct, destruct, destruct object}}
~keywords{admin}
~desc{
  ~enUS{

The %destruct command destructs objects by object name or history
number.  Destructing a library and recompiling it may not be enough to
fully replace it in the code of its inherited objects.

See %history and "http://phantasmal.sf.net/DGD/Kernel/Inheritance.html".

}}


~name{~enUS{%compile, compile, compile object}}
~keywords{admin}
~desc{
  ~enUS{

The %compile command compiles objects by object name or history
number.  Destructing a library and recompiling it may not be enough to
fully replace it in the code of its inherited objects, though
recompiling a clonable will upgrade all clones.  If clonable, the
compiled object will be added to the command history.

See %history, "http://phantasmal.sf.net/DGD/Kernel/Inheritance.html",
%destruct, and %full_rebuild.

}}


~name{~enUS{%code, code, arbitrary code, lpc, lpc code}}
~keywords{admin}
~desc{
  ~enUS{

The %code command will run a bit of DGD LPC code that you specify and
return a result.  Simple examples include:

%code 3 + 7
%code destruct_object($3)
%code (\{"bob", "sam", "fred"\}) & (\{"bob", "william"\})

This code will be run from your directory, and thus with your
permissions.  The object itself will be called /usr/you/_code where
"you" is replaced by your username.  If you have a file called
/usr/you/include/code.h, it will be included before the code is run.
This allows you to declare variables and inherit from a parent object,
if you so desire.

See %history and "http://phantasmal.sf.net/DGD".

}}


~name{~enUS{objectd report,od_report,%od_report,object report}}
~keywords{admin}
~desc{
  ~enUS{

The %od_report command will give the objectd's view of a particular
object or issue.  It may be used on an LPC program, or a particular
issue number or history number (see %history):

%od_report /usr/System/obj/wiztool
%od_report #47
%od_report $7

In any of these cases it will report whether the object is clonable
or inheritable, whether the issue found is destructed, the name,
index and time of compilation, previous issue if any, and parent
issues and files the program depends on (other than its direct
corresponding source file).

}}


~name{~enUS{%list_dest,%list_destroyed,list_dest,list_destroyed,list dest,
            list destroyed,listdest,%listdest,listdestroyed,%listdestroyed}}
~keywords{admin}
~desc{
  ~enUS{

Users who are not debugging the objectd will probably have no need
ever to use the %list_dest command.  It simply prints out a current
list of programs whose most recent issue is destroyed (with the
%destruct command or with destruct_object()).

}}


~name{~enUS{rebuild,full_rebuild,%full_rebuild,full rebuild,fullrebuild,
            full_recompile,%full_recompile,full recompile,fullrecompile}}
~keywords{admin}
~desc{
  ~enUS{

The %full_rebuild command will entirely recompile the LPC sources of the
MUD with the exception of the Driver object, /kernel/sys/driver.c.
That may be separately recompiled with the %compile command if you're
so inclined.

It updates by destructing every library (as with the %destruct command) and
then rebuilding every clonable.

}}


~name{~enUS{cd,pwd,ls,cp,mv,rm,mkdir,rmdir}}
~keywords{admin}
~desc{
  ~enUS{

The cd, pwd, ls, cp, mv, rm, mkdir and rmdir commands work like in
Unix.  For DOS folks, the differences are that cd, typed by itself,
switches to your home directory instead of printing the current
directory.  pwd, typed by itself, shows the current directory.  DIR is
ls, COPY is cp, MOVE is mv.  The rest should be the same.

If you've never used either DOS or Unix, please avoid these commands
for your own sanity.  They can do serious damage to your MUD without
you intending anything bad.  If you don't understand them already,
don't use them.

}}


~name{~enUS{%ed,ed,edit}}
~keywords{admin}
~desc{
  ~enUS{

DGD includes a build-in line editor called "ed".  You invoke it by
typing "%ed", or "%ed <filename>".  This can seriously mess stuff up.
If you don't already know how to use it, please don't mess with it.

}}


~name{~enUS{%grant,%ungrant,grant,ungrant}}
~keywords{admin}
~desc{
  ~enUS{

%grant <username> access
%grant <username> <path> [read|write|full]
%grant global <path>

%ungrant <username> access
%ungrant <username> <path>
%ungrant global <path>

Using the "%grant <user> access" syntax turns a regular user into an
admin character, giving him significant additional powers.  There's no
simple, controlled way to do so at this point -- you're definitely
compromising the security of the MUD if you don't trust the person you
do this to.

The "%grant <user> <path> [r|w|f]" syntax grants a specific user a
specific kind of access (read access, write access or full
administrative access) to a specific location and all its
subdirectories.  This is the basic way that Kernel library permissions
work.

The %ungrant command is the opposite of grant, and the corresponding
syntaxes remove the corresponding permissions.  For instance "%ungrant
<user> access" will make the targeted character stop being an admin
character.  Be warned that an unscrupulous user can do that to your
character as well!

Regardless of anything else you do, the "admin" character retains full
privileges.  This is an immutable characteristic of the Kernel
Library.

}}


~name{~enUS{permission,permissions}}
~keywords{admin}
~desc{
  ~enUS{

To view a user's permissions, use the %access command.  To add new
permissions, use the %grant command.  To remove existing permissions,
use the %ungrant command.

}}
