#COMPARE
Format:      COMPARE <file1> <file2>

Priority:    1

Description: Compare the files <file1> and <file2> for equality. Both <file1>
	     and <file2> can be either a generation or a DOS file. SMUT
	     scans the field for a semicolon (;) to determine which.
#CREATE CLASS
Format:      CREATE CLASS <class name> [<remark>]

Priority:    2

Description: Create a class of the specified name.
#CREATE ELEMENT
Format:      CREATE ELEMENT <element name> [<remark>] {-F<file>|-K}

Priority:    2

Description: Create the named element at generation 1 from an input file.

             By default the input file is the file in the current working
             directory with the same name as the element. Alternatively this
             can be overridden by including the F flag and specifying a
             different input file.

             Normally the input file is deleted after the element is 
             created. This can be suppressed by specifying the K flag.
#CREATE GROUP
Format:      CREATE GROUP <group name> [<remark>]

Priority:    2

Description: Create a group of the specified name.
#CREATE LIBRARY
Format:      CREATE LIBRARY <library directory> <user name> [<remark>]

Priority:    0

Description: Create a library in the specified directory. Create a user of 
             the specified name in the new library. The users password will 
             be set to be identical to its name and the user priority to 3. 
             The newly created library and user become the current library
             and user. If the specified library directory exists then it 
             must be empty; if it does not exist it will be created 
             providing it is a subdirectory of an existing directory.
#CREATE USER
Format:      CREATE USER <user name> [<remark>] [-P<priority>]

Priority:    3

Description: Create a user of the specified name. Associate the specified 
             remark with the user. The user priority will default to 1 
             unless overridden by the P flag. The user password will be 
             prompted twice. Input of the password will not be echoed and 
             only if both inputs match will the user be created.
#DELETE CLASS
Format:      DELETE CLASS <class name> [<remark>] [-R]

Priority:    2

Description: Delete the specified class. If the -R flag is specified then 
             any generations contained in the class are first removed. If 
             the -R flag is not specified then deletion will only be 
             allowed if the class is already empty.
#DELETE ELEMENT
Format:      DELETE ELEMENT <element name> [<remark>]

Priority:    2

Description: Delete the specified element. If the element is contained in a 
             group, any of its generations are contained in a class, or any 
             of its generations are reserved then deletion will be 
             disallowed.
#DELETE GROUP
Format:      DELETE GROUP <group name> [<remark>] [-R]

Priority:    2

Description: Delete the specified group. If the -R flag is specified then 
             any elements contained in the group are first removed. If the 
             -R flag is not specified then deletion will only be allowed if 
             the group is already empty.
#DELETE HISTORY
Format:      DELETE HISTORY [<before date>]

Priority:    3

Description: Delete all or part of the contents of the history file. If 
             <before date> is specified then all history records on or 
             before that date are deleted. If <before date> is not 
             specified then all history records are deleted.
#DELETE LIBRARY
Format:      DELETE LIBRARY

Priority:    3

Description: Delete the current library. The operator is asked to input the 
             present users password again to confirm that library deletion 
             is required. Following deletion the current library and user 
             become unset.
#DELETE USER
Format:      DELETE USER <user name> [<remark>]

Priority:    3

Description: Delete the specified user. Deletion is only allowed if the 
             specified user has no outstanding reservations. It is not 
             possible to delete the current user, hence the library can 
             never contain less than one priority 3 user.
#DIFFERENCE
Format:      DIFFERENCE <file1> <file2> [<remark>]
                {-F<output file>|-H|-N|-W<window size>|-M<max differences>}

Priority:    1

Description: Find the differences between text files <file1> and <file2>. The
	     output is either sent to file <output file> if the F flag is
	     specified or the screen if it is not. Both <file1> and <file2>
             can be either a generation or a DOS file. SMUT scans the field 
	     for a semicolon (;) to determine which. Normally line numbers
             are generated in the output, this can be suppressed by 
             specifying the N flag. The difference process can be caused to 
             terminate after a certain number of differences have been 
             encountered using the M flag. If the M flag is not specified 
             then the difference process will run until all differences are 
             found.

             The difference process is achieved by scanning a window across 
             both files and looking for a match. The default window size is 
             3 however this can be overridden using the W flag.

             This command will only be recorded in the history file if the
             H flag is specified.
#FETCH GENERATION
Format:      FETCH GENERATION <generation> [<remark>] {-F<filename>|-H}

Priority:    1

Description: Fetch a specific generation but do not mark it as reserved.
             Normally the generation is copied into the current working
             directory and given the same name as the generation. This can be
             overriden with the F flag which will allow the generation to be
             copied to any directory and be given any name.

             This command will only be recorded in the history file if the
             H flag is specified.
#FETCH CLASS
Format:      FETCH CLASS <class name> [<remark>] [-H]

Priority:    1

Description: Fetch all the generations contained in a specific class but do
             not mark them as reserved. The generations are copied to files in
             the current working directory which are given the same name as
             the generation.

             This command will only be recorded in the history file if the
             H flag is specified.
#HELP
Format:      HELP [<command>]

Priority:    0

Description: If a command is specified then display the help text for that
             command. If no command is specified then list all the available
             commands.
#INSERT ELEMENT
Format:      INSERT ELEMENT <element name> <group name> [<remark>]

Priority:    2

Description: Insert the specified element into the specified group.
#INSERT GENERATION
Format:      INSERT GENERATION <generation name> <class name> [<remark>]

Priority:    2

Description: Insert the specified generation into the specified class.
#LOCK LIBRARY
Format:      LOCK LIBRARY

Priority:    3

Description: Lock the library thereby preventing other NET users from 
             gaining access.
#MODIFY GROUP
Format:      MODIFY GROUP <old group name> <new group name> [<remark>]

Priority:    2

Description: Modify the name and optionally the remark associated with the 
             specified group.
#MODIFY CLASS
Format:      MODIFY CLASS <old class name> <new class name> [<remark>]

Priority:    2

Description: Modify the name and optionally the remark associated with the 
             specified class.
#MODIFY ELEMENT
Format:      MODIFY ELEMENT <old element name> <new element name> [<remark>]

Priority:    2

Description: Modify the name and optionally the remark associated with the 
             specified element
#MODIFY LIBRARY
Format:      MODIFY LIBRARY <remark>

Priority:    3

Description: Modify the remark associated with the current library.
#MODIFY PASSWORD
Format:      MODIFY PASSWORD [<remark>]

Priority:    1

Description: Prompt the operator for a new password for the current user. 
             The password is input (without echo) twice, and only if both 
             inputs match is the password changed.
#MODIFY USER
Format:      MODIFY USER <user name> [<remark>] {-P<priority>|-W}

Priority:    3

Description: Optionally modify the priority, password and remark associated 
             with the specified user. The remark is modified if it is 
             specified. The priority is modified if the P flag is specified. 
             If the W flag is specified then a new password is prompted for. 
             The password is input (without echo) twice, and only if both 
             inputs match is it password changed.
#QUIT
Format:      QUIT

Priority:    0

Description: Terminate SMUT and return to DOS.
#REMARK
Format:      REMARK <remark>

Priority:    1

Description: Enter a remark into the history file.
#REMOVE ELEMENT
Format:      REMOVE ELEMENT <element name> <group name> [<remark>]

Priority:    2

Description: Remove the specified element from the specified group.
#REMOVE GENERATION
Format:      REMOVE GENERATION <generation name> <class name> [<remark>]

Priority:    2

Description: Remove the specified generation from the specified class.
#REPLACE
Format:      REPLACE <generation> [<remark>] {-F<filename>|-K|-V<id>}

Priority:    2 providing the generation was originally reserved by the
             current user, else 3.

Description: Replace a reserved generation. Normally from a file with the
             same name as the element unless overridden by the F flag.
             Delete the input file unless suppressed by the K flag.
             Normally generate the next generation in the main line of
             decent unless overridden by the V flag.
#RESERVE
Format:      RESERVE <generation> [<remark>] {-F<filename>|-D}

Priority:    2

Description: Unless the D flag is specified, copy the contents of the
	     specified generation to a file. Mark the generation as reserved
	     by the current user. Normally the output file is that with the
	     same name as the element in the current working directory,
	     however this can be overridden using the F flag. If the D flag is
	     specified then the output is discarded.
#SET DIRECTORY
Format:      SET DIRECTORY <directory>

Priority:    0

Description: Set the current working directory and drive.
#SET LIBRARY
Format:      SET LIBRARY <directory> [<user name>]

Priority:    0

Description: Set the current library and optionally prompt for the
             specified users password and if correct set that user to be
             the current user. This command is actioned in two parts so
             that if setting the user fails (because the user name does
             not exist or the password is incorrect) the new library will
             still be set.
#SET USER
Format:      SET USER <user name>

Priority:    0

Description: Prompt for the specified users password and if correct set
             that user to be the current user.
#SHOW CLASS
Format:      SHOW CLASS [<class name>] {-L<filename>|-A<filename>}

Priority:    0

Description: If a class name is specified, show the generations contained
             in that class. If no class name is specified then list all
             the classes. If neither the L nor A flag is specified output
             is to the screen; if the L flag is specified then a new file
             (of the given file name) is created and the output sent to
             that; if the A flag is specified then the output is appended
             to the given existing named file.
#SHOW DIRECTORY
Format:      SHOW DIRECTORY {-L<filename>|-A<filename>}

Priority:    0

Description: Show the current working drive and directory and all the
             files contained therein. If neither the L nor A flag is specified
             output is to the screen; if the L flag is specified then a new
             file (of the given file name) is created and the output sent to
             that; if the A flag is specified then the output is appended
             to the given existing named file.
#SHOW ELEMENT
Format:      SHOW ELEMENT [<element name>] {-T|-L<filename>|-A<filename>}

Priority:    0

Description: If the element name is specified, show the generations of
             that element. If the element name is not specified then list
	     all elements. If an element is specified then the -T flag can
	     optionally be given. If given the generations are displayed in
	     a tree form; if not given they are listed. If neither the L nor
	     A flag is specified output is to the screen; if the L flag is
	     specified then a new file (of the given file name) is created
	     and the output sent to that; if the A flag is specified then
	     the output is appended to the given existing named file.
#SHOW GROUP
Format:      SHOW GROUP [<group name>] {-L<filename>|-A<filename>}

Priority:    0

Description: If a group name is specified, show the elements contained in
             that group. If no group name is specified then list all the
             groups. If neither the L nor A flag is specified output
             is to the screen; if the L flag is specified then a new file
             (of the given file name) is created and the output sent to
             that; if the A flag is specified then the output is appended
             to the given existing named file.
#SHOW HISTORY
Format:      SHOW HISTORY [<date1> [<date2>]] {-L<filename>|-A<filename>}

Priority:    0

Description: Show the contents of the history file. If no dates are specified
             then show the whole file. If one date is specified then show
             only entries after that date. If two dates are specified
             then show entries between the two dates. If neither the L nor A
             flag is specified output is to the screen; if the L flag is
             specified then a new file (of the given file name) is created
             and the output sent to that; if the A flag is specified then the
             output is appended to the given existing named file.
#SHOW LIBRARY
Format:      SHOW LIBRARY {-L<filename>|-A<filename>}

Priority:    0

Description: Show the current library, current user and current working
             directory. If neither the L nor A flag is specified output
             is to the screen; if the L flag is specified then a new file
             (of the given file name) is created and the output sent to
             that; if the A flag is specified then the output is appended
             to the given existing named file.
#SHOW RESERVATIONS
Format:      SHOW RESERVATIONS {-L<filename>|-A<filename>}

Priority:    0

Description: Show all the reserved generations and the users that have
             reserved them. If neither the L nor A flag is specified output
             is to the screen; if the L flag is specified then a new file
             (of the given file name) is created and the output sent to
             that; if the A flag is specified then the output is appended
             to the given existing named file.
#SHOW USER
Format:      SHOW USER [<user name>] {-L<filename>|-A<filename>}

Priority:    0

Description: If the user name is specified show information about that
             user. If the user name is not specified then list all the
             users. If neither the L nor A flag is specified output
             is to the screen; if the L flag is specified then a new file
             (of the given file name) is created and the output sent to
             that; if the A flag is specified then the output is appended
             to the given existing named file.
#SHOW VERSION
Format:      SHOW VERSION {-L<filename>|-A<filename>}

Priority:    0

Description: Show the current version of SMUT and additional registration
	     information. If neither the L nor A flag is specified output
	     is to the screen; if the L flag is specified then a new file
	     (of the given file name) is created and the output sent to
	     that; if the A flag is specified then the output is appended
	     to the given existing named file.
#UNLOCK LIBRARY
Format:      UNLOCK LIBRARY

Priority:    1

Description: Allow library access by other NET users.
#UNRESERVE
Format:      UNRESERVE <generation> [<remark>]

Priority:    2 providing the generation was originally reserved by the
             current user, else 3.

Description: Unreserve a reserved generation.
#UNSET USER
Format:      UNSET USER

Priority:    1

Description: Unset the current user. The priority will hence become 0.
