History of ARexxBox Releases
----------------------------

V0.99       first beta release

V0.99a      FIXED: Argument and result lists could work on an
	    invalid command -> Enforcer-Hit/Crash.
	    (Report: RALF_KAISER@AWORLD)

V0.99b      ENHANCED: GadToolsBox source fixed to use the System Default
	    Font instead of the Screenfont for Layout and Gadgets.
	    (Report: SYSOP@INSIDER [Garry Glendown])

V0.99c      FIXED: The equal sign '=' wasn't allowed for arguments.
	    
	    FIXED: After changing some argument or result, the display
	    now shows the changed element, rather than the last one
	    in that list.
	    
	    FIXED: The font routines still had some error.
	    (Report: F.J.Reichert [F_J_REICHERT@SAARAG])

V0.99d      FIXED: All pointer conversions are now clean. The code
	    should now be compileable without warnings.
	    Added pragma #includes and _toupper() for SAS/C.
	    (Report: W_KUETING@HSP)
	    
V0.99e      FIXED: When _no_ result field was given, the code
	    generated an "out of memory" error.
	    
	    ENHANCED: ReplyRexxCmd() now creates the variable RC2, it
	    contains the "Secondary Returncode", which can be set in
	    any rxif-structure under the name rc2. This variable can
	    be used to return detailed error codes to the calling
	    rexx program.
	    
	    This feature is an extension of the style guide conventions,
	    IMHO a good one. If you have complaints or comments on 
	    this idea, please tell me!
	    
	    RC2 will only be generated if a) 'options results' was given
	    and b) RC != 0. The field rc2 may contain an error code (long)
	    as well as an error string (char *). Code is the default.
	    The software distinguishes these two types by the sign of
	    rc, rc positive means rc2 is a long, rc negative means rc2
	    is a char *.
	    A negative rc will be converted to positive before beeing
	    returned to the caller.
	    
	    Example for error CODE:
		rd->rc = 10;
		rd->rc2 = ERROR_OBJECT_NOT_FOUND;
	    
	    Example for error STRING:
		rd->rc = -10;
		rd->rc2 = (long) "You idiot! No object!";
	    
	    The standard error strings are _not_ localized. As soon as
	    I get some infos and tools for this, I'll do it.

	    ENHANCED: SendRexxCommand() now has a new parameter for
	    better supporting the standard command "RX". It is a
	    FileHandle (BPTR!), which becomes the stdin/stdout of
	    the executed arexx script. FreeRexxCommand() closes
	    the file (if necessary).
	    
	    SendRexxCmd() now returns the address of the sent
	    RexxMsg structure (or NULL for error).
	    
	    ENHANCED: The RexxHost structure now has a new field
	    called "userdata". It can be used to hook the RexxHost
	    onto your own structures, e.g. for linking hosts and
	    and their project instances together.
	    
	    ENHANCED: Every command now has a global "enabled"
	    flag. If the flag is 0, the dispatcher will not execute
	    that command anymore until the flag will be set again.
	    The user should have the ability to manipulate this flag
	    using the (standard) arexx commands ENABLE and DISABLE
	    (see rxif/*.c).
	    
	    CHANGED: Any CommandShell now must have its own RexxHost,
	    that means that host _must_not_ be used as a normal ARexx
	    port simultaneously.
	    
	    ENHANCED: As a consequence, every rxif function now gets
	    the RexxHost of the ARexx port resp. CmdShell as it's
	    (first) parameter. Therefore the function can decide
	    whether it was called from ARexx or from a Shell and
	    on which project it should work.
	    
	    ENHANCED: Another consequence is the new flag ARB_HF_CMDSHELL
	    for supporting the standard command CMDSHELL. The flag is
	    in the 'flags' field of the RexxHost structure. If it's
	    set, that host is currently running a shell. You can
	    clear the flag from anywhere causing the shell to close
	    (after processing the next command).
	    
	    FIXED: ARB no longer accepts argument or result names
	    consisting of only spaces or only options.
	    
	    CHANGED: As some rxif functions have to access them,
	    the structs 'rxs_command' and 'rxs_commandlist' are now
	    defined in the headerfile. For accessing the command
	    list, there is a new function:
		struct rxs_command *FindRXCommand( char *name );
	    
	    FIXED: Arguments with '=' are now translated correctly
	    into variable names for C. The last alias component
	    will be used as the var name.
	    
	    ENHANCED: There is now a callback function for words
	    the parser doesn't recognize:
		char *ExpandRXCommand( struct RexxHost *host,
				       char *commandline );
	    This function will be called before the parser returns
	    an error. If the function returns NULL, the error will be
	    generated, if not, the parser assumes that the function
	    was able to analyze the input and tries to parse the
	    returned string.
	    This function can be used to implement command aliases
	    or processing of non-standard commands.
	    
	    Attention! ExpandRXCmd() has to allocate memory for the
	    returned string, using standard C functions! This memory
	    will be freed by the parser after processing the string!
	    
	    ENHANCED: ARB now does more safety checks on saving the
	    source modules, so you should never accidentally destroy
	    other code.
	    
	    NOTE: One of the standard commands as suggested by the
	    style guide uses the keywords "VAR" and "STEM" to
	    describe the INPUT variables instead of the former
	    usage as OUTPUT descriptors. I don't think this is a
	    good choice as there can't be any results from this
	    function that way. I suggest other names for those
	    arguments, e.g. "FROMVAR" and "FROMSTEM".
	    Comments?
	    
	    (The ARB doesn't look at the already existing args, if
	    a command has some result, "VAR" and "STEM" will be
	    added to the template.)
	    
	    Some of the style guide suggestions are not very precise
	    and need extensions to operate correctly. I added some
	    extensions to the arexx standard commands. Comments
	    welcome.
	    
	    FIXED: Numeric results now work.

V0.99f	    ENHANCED: ARB now uses two FileRequesters, one for the
	    binaries and the other for sources. The patterns now
	    remain what you set them to and have defaults with #?
	    instead of *.
	    (Report: Stefan Zeiger)
	    
	    FIXED: Window->TopEdge is now font sensitive.
	    (Report: Stefan Zeiger)
	    
V0.99g	    FIXED: The parser now returns the ReadArgs() error code
	    in rc2.
	    
	    CHANGED: No longer appends \n to the template string
	    before parsing (not needed).
	    
	    CHANGED: The ARexxBox now uses the ASL file requester.
	    (Wish: Garry Glendown [Sysop@Insider])
	    
V1.00 	    ENHANCED: Source now compatible to GCC. Remaining
	    warnings may be ignored.
	    
	    CHANGED: FindRXCommand() now only accepts real abbreviations
	    of commands.
	    
--- FIRST PUBLIC RELEASE ---
	    
