SSFP File Format
An SSFP file (.SSFP) is a textual representation of a form. It consists of one or more individual forms, each of which contains a set of input fields of various types.
Below is an example of a small SSFP form:
&example-form Example Form
field name Your Name
radio pref Which do you prefer?
-dog Dog
-cat Cat
submit sub Submit
...which represents the following form:

Status text
Status messages can be defined by starting a new line with the '!' character. Everything after this character will be considered part of the status message, until the next line.
Because SSFP is a line-delimited format, a status message cannot contain line breaks.
Forms
Forms are a collection of fields. Once declared, all subsequent lines are considered to be part of the form, until the next form declaration.
Forms are declared with the following format:
The form declaration starts with the '&' character, immediately followed by the form id. The form id is not shown to the user, but is instead part of the SSFP protocol. It cannot contain spaces.
The form id is seperated from the form name with a space. Everything after the first space is considered the form name, until the next line break
Fields
Fields are the individual items that make up a form. SSFP support the following varieties:
- Field, a single-line text box
- Area, a multi-line text box
- Check, a checkbox list of options
- Radio, a set of mutually exclusive options
- Submit, a button that sends form data to the host
Fields are declared in the following format:
The line starts with the type of field being declared, in lowercase. After a space follows the field id. Similarly to form ids, this is not shown directly to the user, but is instead used internally in the SSFP protocol
After another space, the rest of the line is considered the form name. This is the text that is presented to the user.
Field Data
Field data is optional information associated with fields. This data can mean different things depending on the field type it is associated with.
Field data is declared by following field declarations with lines that begin with a '-' character. Everything on that line after the '-' will be considered data belonging to the field.
Fields are allowed multible lines of data, but each line must start with '-' and they must all be consecutive.
Below is an example text area declaration. In this case, the data represents pre-populated text
-This field data represents
-multiple lines of
-pre-populated text

Field Type - field
Fields are single line text areas. Example:
-Jason

For fields, additional data is treated as pre-populated text
Field Type - area
Areas are multi-line text boxes. Example:
-This field data represents
-multiple lines of
-pre-populated text

For areas, additional data is treated as pre-populated text
Field Type - check
Check fields are lists of mutually-inclusive options. Example:
-homework Homework
-walk Walk the Dog
-dishes Do the Dishes

For check fields, the available options are defined in the additional data, and follow the following format:
Field Type - radio
Radio fields are Example:
-dog Dog
-cat Cat
-fish Fish
-bird Bird

For fields, the available options are defined in the additional field data, as in check fields.
Field Type - submit
Submit buttons are buttons that trigger the client to send the information in its form's fields to the host. Example:

For fields, additional data is ignored.