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 ---