Copyright (c)  1994, 1995, 2002  Timothy Rue (3seas@threeseas.net)

  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.2
  or any later version published by the Free Software Foundation; with no
  Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.

  A copy of the license is included in the file fdl.html

---------------------------------------------------------------------

                  (OI) Output-to-Input (or Obtain-Input)

 Brief:

     OI - get input into variable, with optional tag.

     OI - Output-to-Input - The concept of Output-to-Input is, for there to be
          input, there must be output from something to grab as input.
          Output-to-Input is a reminder of "Connection".


 Specific:

    (OI) Obtain-Input - Concept of Obtain-Input is to grab input and place it as
         the contents of a variable. A very common function but also contained
         is an optional content tag of the variable as defined by IP tag. Also
         if the amount of input is larger than a given amount, a file is created
         to contain the content and the filename is placed as the value of the
         variable in the OI file. This "OI-file" contains the list of variables,
         their optional content tags and their values. PK cannot alter the
         contents of the OI-file, only OI can. But PK can change the OI-file
         used by OI. Generally, the active OI-file is located in RAM. OI can
         by-pass the IP setting by directly setting the variable and using
         command line redirection/pipe. I.E. "PK IP -r1 | OI -c var"


 Possible OI-file variable data formats:
-----------------------------------------------------------
variable-name ;;
variable-name ; tag ;
variable-name ;; value
variable-name ; tag ; value
variable-name ; tag ; @OI-filename.varname
variable-name ;; @OI-filename.varname
-----------------------------------------------------------


 Variables:
 ----------

        Variables are handled in the typical shell manner, where using a '$' in
        front of a variable name i.e. $varname will access the variable content
        and an escape character '\' to allow the use a '$' as a normal character
        rather than a special character, i.e. '\$test' will output '$test'. This
        way it is possible to create a variable having content containing
        '$variable' or multi-depth variables.


 OI Commands:
 ------------

     OI                             returns PK OI line


     OI -?                          help on OI


     OI -oi                         returns current list of vars & values
                                    (including any tags)


     OI variable                    gets input from user/device into variable
                                    using IP set. If input is greater than 255
                                    characters a file is created to contain the
                                    variables content. The filename is set to
                                    OI-filename.varname where the "OI-filename"
                                    part is the same as the OI-filename and the
                                    "varname" is the same as the variable name.

                                    The tag, if any, will be kept in the actual
                                    OI-file but a pointer '@' to file will
                                    follow in place of the variable value i.e.
                                    @OI-filename.varname  (the '@' symbol
                                    indicating "value at".) Access to the value
                                    contained in such pointed to files is always
                                    through the OI-file variable list.


     OI -c var                      cancels variable.


     OI -c var value                creates/changes variable/value.


     Tags:
     -----
     OI -ct var tag                 sets variable tag to tag given.


     OI -rt var                     returns tag of given variable.


     OI -ct var                     cancels variable tag (only the tag).