History of ARexxBox Releases ---------------------------- V0.99 erster Beta-Release V0.99a FIXED: Argument- und Resultat-Liste konnte mit ungültigem Kommando arbeiten -> Enforcer-Hit/Absturz. (Report: RALF_KAISER@AWORLD) V0.99b ENHANCED: GadToolsBox-Source fixed um den System Default Font statt des Screenfonts für Layout und Gadgets zu benutzen. (Report: SYSOP@INSIDER [Garry Glendown]) V0.99c FIXED: Für Argumente wurde das Gleichheitszeichen nicht zugelassen. FIXED: Nach Änderung eines Argumentes oder Resultates verbleibt die Anzeige auf diesem Element statt (wie bisher) das letzte Listenelement anzuzeigen. FIXED: In den Font-Routinen war noch ein Fehler. (Report: F.J.Reichert [F_J_REICHERT@SAARAG]) V0.99d FIXED: Alle Pointer-Conversions bereinigt. Der Code wird jetzt selbst bei Compiler 'superscharf' völlig ohne Warnings durchgezogen. Pragma-#includes und _toupper() nun auch für SAS/C drin. (Report: W_KUETING@HSP) --- V0.99d wurde nicht verteilt! --- V0.99e FIXED: Wenn _kein_ Resultatfeld belegt war, wurde ein "out of memory"-Fehler erzeugt. ENHANCED: ReplyRexxCmd() erzeugt nun die Variable RC2, sie enthält den "Secondary Returncode", der in jeder rxif-Struktur unter dem Namen rc2 steht. Diese Variable kann z.B. benutzt werden, um detaillierte Fehlercodes an das Rexxprogramm zurückzugeben. Dieses Feature ist eine Erweiterung der Style-Guide- Richtlinien, m.E. eine sinnvolle. Wenn jemand anderer Ansicht ist, bitte Mail an mich! RC2 wird nur erzeugt, wenn a) Resultate erwünscht sind und b) RC != 0 ist. Das Feld rc2 kann sowohl einen Fehlercode (long, default) als auch eine Fehlerbeschreibung (char *) enthalten. Unterschieden wird anhand des Vorzeichens von rc, d.h. rc < 0 <=> rc2 long bzw. rc > 0 <=> rc2 char *. Negatives rc wird vor der Rückgabe nach positiv gewandelt. Beispiel für FehlerCODE: rd->rc = 10; rd->rc2 = ERROR_OBJECT_NOT_FOUND; Beispiel für FehlerSTRING: rd->rc = -10; rd->rc2 = (long) "Objekt nicht gefunden!"; Die Standard-Fehlerstrings sind _nicht_ lokalisiert. Wenn sich C= mal bequemt, mir Infos und Werkzeuge dafür zu schicken, werde ich das natürlich nachholen. ENHANCED: SendRexxCommand() nimmt jetzt zur besseren Unterstützung des Standardbefehls "RX" (zum Starten von ARexx-Programmen) einen zusätzlichen Parameter, ein FileHandle (BPTR!), der als Stdin/Stdout für das Script eingesetzt wird. FreeRexxCommand() übernimmt das Schließen des Kanals. Außerdem liefert SendRexxCmd() nun die Adresse der abge- schickten RexxMsg zurück (oder NULL wenn Fehler). ENHANCED: Die RexxHost-Struktur hat jetzt ein zusätzliches Feld namens "APTR userdata". Es kann z.B. benutzt werden, um in einen RexxHost einen Zeiger auf eine eigene Projekt- Verwaltungs-Struktur einzuhängen o.ä., um den Host ein- deutig einem offenen Projekt zuzuordnen. ENHANCED: Jeder Befehl hat jetzt ein globales "enabled"- Flag, wenn dies gelöscht ist, verweigert der Dispatcher die Ausführung des Befehls. Dieses Flag sollte mit den Standard-ARexx-Befehlen (Style Guide) ENABLE und DISABLE beeinflussbar sein (siehe rxif/*.c). CHANGED: CommandShells benötigen jetzt einen eigenen RexxHost auf dem sie alleine arbeiten können. D.h. der dafür bereitgestellte Host DARF NICHT gleichzeitig als normaler ARexx-Port benutzt werden. Eine abwechselnde Benutzung als ARexx- und Cmd-Port ist denkbar, aber nicht empfehlenswert... ENHANCED: Damit einhergehend bekommt nun jede rxif-Funktion den RexxHost des ARexx-Ports bzw. der CmdShell als (ersten) Parameter (host) übergeben. Dadurch kann die Funktion z.B. entscheiden, zu welchem Projekt der Befehl ausgeführt werden soll. ENHANCED: Ebenfalls damit einhergehend existiert jetzt zur Unterstützung des Standardbefehls CMDSHELL in jedem RexxHost ein Flag (ARB_HF_CMDSHELL), das anzeigt, ob der Host gerade eine CommandShell fährt. Wenn dieses Flag (durch CMDSHELL CLOSE) gelöscht wird, terminiert die ARexx- Box die CommandShell. FIXED: Aus Spaces oder nur aus Optionen bestehende Argument- bzw. Resultatfeldnamen werden nicht mehr akzeptiert. CHANGED: Da einige rxif-Funktionen darauf zugreifen müssen ist "struct rxs_command" und "rxs_commandlist" nun im Headerfile definiert. Für den Zugriff auf die Liste (finden eines Kommandos) ist eine neue Funktion da: struct rxs_command *FindRXCommand( char *name ); FIXED: Argumente mit '=' wurden nicht korrekt in C-Variablennamen umgesetzt. Nun wird der letzte Alias als Variablenname benutzt. ENHANCED: Es gibt jetzt eine eigene Handlerfunktion für dem Parser unbekannte Kommandos: char *ExpandRXCommand( struct RexxHost *host, char *commandline ); Diese wird aufgerufen, bevor der Parser "Not implemented" als Fehler ausgibt. Wenn die Funktion NULL zurückgibt, wird der Fehler ausgegeben, ansonsten versucht der Parser, den zurückgegebenen String zu analysieren. Diese Funktion kann z.B. die Expansion von Aliases oder die Bearbeitung von Non-Standard-Kommandos über- nehmen. Achtung! Es wird erwartet, daß Expand() eigens Speicher für den Resultatstring allokiert, dieser wird von den ARB-Routinen dann freigegeben! ENHANCED: Die Checks beim Generieren der Source- Module sind jetzt sicherer. Es wird nun auch auf Existenz des C- und H-Moduls geprüft. NOTE: Als ich die vom Style Guide vorgeschlagenen Standardkommandos eingab, sah ich, daß die Argumente "VAR" und "STEM" an einer Stelle auch dazu benutzt werden, die EINgabe der Funktion von den damit be- nannten Variablen zu holen. Ich weiß nicht, ob das so eine glückliche Wahl ist, da man auf diese Art&Weise keine Resultate mehr haben kann. Besser wäre eine andere Benennung, z.B. "FROMVAR" und "FROMSTEM". Vorschläge? Die ARB kümmert sich wenig um die bereits eingegebenen Argumente, wenn Resultatfelder existieren, werden VAR und STEM immer in das Template aufgenommen. Allgemein sind einige Definitionen an der Stelle im Style Guide sehr ungenau oder unzureichend. Ich habe die Definition (sinnvoll) erweitert. Wer mit meinen Änderungen nicht einverstanden ist, soll sich bitte melden. NOTE: Beim übernehmen alter Interface-Routinen daran denken, daß ein neuer Parameter dazu gekommen ist! FIXED: Numerische Resultate funktionieren jetzt. V0.99f ENHANCED: Es werden zwei FileRequester verwendet, einer für Binaries und einer für Sourcen. Die Patterns bleiben nun erhalten und sind standardmässig mit #? statt *. (Report: Stefan Zeiger) FIXED: Window-Topedge ist nun Fontsensitiv. (Report: Stefan Zeiger) V0.99g FIXED: Beim Parsen der Argumente wird nun der von ReadArgs() erzeugte Fehlercode als rc2 benutzt. CHANGED: Den Templates wird nun vor dem Parsen kein \n mehr angehängt (unnötig). CHANGED: Die ARexxBox benutzt nun den ASL-Filerequester. (Wunsch: Garry Glendown [Sysop@Insider]) V1.00 ENHANCED: Source wird nun auch vom GCC fehlerfrei und warnungsfrei übersetzt - naja, fast warnungsfrei. Die verbleibenden Warnungen können aber getrost ignoriert werden. CHANGED: FindRXCommand() akzeptiert nur noch echte Abkürzungen der vorhandenen Befehle. --- ERSTER ÖFFENTLICHER RELEASE ---