The forms in sushi are simple ascii databases of various fields and options
that are shown to the user, to be later processed by a script or exec action
item.

The form consists of a field type, followed by it's required arguments,
and a description of the field.  The different field types are listed below.

entry		A simple entry field.  The only argument is the length of
		the field.
req-entry	A required entry field.  This is the same as the entry field
		except that the user must enter a value to proceed.
escript		An escript is an entry field, whose initial value is filled
		in by a script that is run during the form generation.  The
		Arguments are:  max field length, the name of the script to
		run, and any optional arguments the user wishes to pass to
		the script.
req-escript	A required escript field.
nescript	A no-entry escript.  This is the same as an escript, except
		that the user is not allowed to modify the contents of
		the field.
list		A simple list of possible values.  The arguments to this
		is a list of valid choices for the user.
req-list	A required list.
multilist	A multilist is the same as a list, except that the user may
		choose multiple items from the list, instead of only one.
blank		A blank item.  This is useful for providing additional
		instructions for a particular field.
func		Calls a function internal to sushi.  The function presents
		a list to the user.  The arguments to func is the name of
		a function (which must be compiled into sushi) and an
		optional string argument to pass to the function.
req-func	A required function field.
multifunc	A function field where the user may make multiple selections.
script		The script field is a list field, where the list of items is
		generated by running a script.  The script's only output
		must be a simple list of items, such as 'ls -1' might generate.
		The arguments are the name of the script to be called (which
		must reside in the endpoint directory) and any optional
		arguments to pass the script.
req-script	A required script field.
multiscript	A multiple selection list field.
noedit		An uneditable field.  The argument is the value of the field.
invis		An invisible and uneditable field.  The argument is the
		value of the field.
integer		An integer field.  The arguments are the number of digits,
		the minimum number, and the maximum number allowed.  You may
		also supply an optional default for the field.
req-integer	A required integer field.
iscript		An integer field, whose default is set by the invocation 
		of a script.  The arguments are the number of digits,
		the minimum number, the maximum number, and the name of the
		script to invoke, followed by any number of arguments to pass
		to the script.
req-iscript	A required iscript field.
ipv4		A simple entry field for IPv4 address types.  The only
		optional argument is an initial value for the field.
req-ipv4	A required IPv4 entry field.  This is the same as the IPv4 
		entry field except that the user must enter a value to proceed.
ipv4script	An ipv4script is an IPv4 entry field, whose initial value is 
		filled in by a script that is run during the form generation.
		The arguments are: the name of the script to run, and any
		optional arguments the user wishes to pass to the script.
req-ipv4script	A required IPv4 script generated entry field.
ipv6		A simple entry field for IPv6 address types.  The only
		optional argument is an initial value for the field.
req-ipv6	A required IPv6 entry field.  This is the same as the IPv6 
		entry field except that the user must enter a value to proceed.
ipv6script	An ipv6script is an IPv6 entry field, whose initial value is 
		filled in by a script that is run during the form generation.
		The arguments are: the name of the script to run, and any
		optional arguments the user wishes to pass to the script.
req-ipv6script	A required IPv6 script generated entry field.


If a description consists of the keyword BLANK, no description will be
displayed to the user.

An example of a simple form:

script:script1,audio	Install which audio pkg?
invis:audio		BLANK
list:yes,no		Are you sure?

The field type is allways the first character on the line.  It is followed
directly by a semicolon, and then the arguments for the field, separated
by commas.  The description is separated from the field definition by one
or more whitespaces, such as tab or space.

When the form is processed, its arguments are passed to a script or exec
action-item for futher processing.  In this example, a script run from
the previous form, might receive the following data:

$1 = "fooshi-1.3"
$2 = "audio"
$3 = "yes"

$NetBSD: help,v 1.5 2005/02/22 16:53:11 peter Exp $
