GetVer 3.02 Copyright © 1992-1994 by Jörg Schuchardt - SHAREWARE - Zeile 1. Rechtliches 1.1. Haftung..................32 1.2. Shareware................42 1.3. Copyright................90 2. Allgemeines 2.1. Beschreibung............117 2.2. Warum nicht VERSION?....133 2.3. Systemvoraussetzungen...171 2.4. Installation............180 2.5. Funktionsweise..........199 3. Bedienung 3.1. CLI-Aufruf..............223 3.2. Workbench-Aufruf........405 3.3. Das GUI.................456 4. Sonstiges 4.1. Die Zukunft.............537 4.2. Danksagungen............546 1. Rechtliches 1.1. Haftung ACHTUNG! DER AUTOR ÜBERNIMMT KEINERLEI HAFTUNG FÜR DURCH DIE BENUTZUNG VON GETVER ENTSTANDENE SCHÄDEN. DIE ANWENDUNG VON GETVER GESCHIEHT AUF EIGENE VERANTWORTUNG. 1.2. SHAREWARE Ab der Version 3.00 ist GetVer ein SHAREWARE-Programm. Wer es nach einer kurzen Testphase weiterhin benutzen will, der muß sich unter der weiter unten angegebenen Adresse registrieren lassen. In der unregistrierten Version erscheint vor jeder Ausgabe der Text: "Sie sollten sich für GetVer registrieren lassen..." Erst nach Ablauf von ca. 10 Sekunden verschwindet dieser Text wieder und GetVer beginnt mit der eigentlichen Arbeit. Diese Verzögerung dient als "Nerv-Schleife" und soll unregis- trierte Anwender dazu bewegen sich registrieren zu lassen. Außerdem wurde die Puffergröße in dieser Version auf einen erheblich kleineren Wert festgelegt, was die Arbeitsgeschwin- digkeit beeinträchtigt. Ansonsten ist die diese Version aber absolut vollwertig! In der registrierten Version sind dann natürlich weder der Text, noch die Warteschleife enthalten. Die Registrierung erfolgt einfach durch Überweisung von 10,- DM auf mein Konto. Vergessen Sie dabei bitte nicht Ihren Namen und Ihre postalische Anschrift als Verwendungszweck auf dem Überweisungs- träger zu vermerken! Diese Angaben werden zwingend zur Registrierung benötigt! Wenn diese Angaben fehlen, habe ich nicht die Möglichkeit Sie zu registrieren und ich kann Ihnen auch Ihr Geld nicht wieder zukommen lassen! Um diese Möglichkeit gänzlich auszuschließen, sollten Sie mir zusätzlich das beigefügte Registrierungsfile ausgefüllt per E-Mail oder auf dem Postwege zukommen lassen. Wer seine GetVer-Version auch per E-Mail beziehen möchte, der sollte das ebenfalls vermerken. Meine Bankverbindung lautet: BLZ: 262 500 01 (Kreissparkasse Northeim) Kto: 130 042 260 und meine Anschrift ist: Jörg Schuchardt E-Mail: Fichtenweg 4 J.Schuchardt@ASS.dinoex.sub.org 37181 Hardegsen 1.3. COPYRIGHT GetVer darf nur in dem nachfolgend aufgeführten Umfang und in keiner Weise verändert weitergegeben werden: · GetVer - das Programm selbst · GetVer.info - das Programmicon für OS 2.x/3.x · GetVer.MWB.info - das Programmicon für MagicWB · GetVer.register - das Registrierungsfile für GetVer · GetVer.guide - das deutsche Guide-File · GetVer.guide.info und das zugehörige Icon · GetVer.dok - diese Anleitung · GetVer.dok.info und das zugehörige Icon · GetVer.history   - die deutsche Entstehungsgeschichte · GetVer.history.info und das zugehörige Icon Die Übernahme in eine PD-Serie ist gestattet, wenn eine Diskette dieser Serie nicht mehr als 5,- DM bzw. den entsprechenden Betrag in einer anderen Währung kostet. Eine irgendwie geartete Verbreitung der Software mit kommerziellen Produkten ist nur mit der ausdrücklichen, schriftlichen Genehmigung des Autors gestattet. Diese kann ebenfalls bei der unter Shareware angegebenen Adresse schriftlich erfragt werden. 2. Allgemeines 2.1. Beschreibung GetVer ist ein Ersatz für den Standard DOS-Befehl VERSION. Es ermittelt die Versionsnummer eines Programms, einer Library oder eines Devices, auf Disk oder im Speicher. Je nach Wunsch sortiert, formatiert und vergleicht es getestete Files. Desweiteren arbeitet es neuerdings auch mit den üblichen DOS-Jokern und ist dadurch noch flexibler. Nun wird sich manch einer vielleicht fragen: "Warum soll ich GetVer benutzen? Es gibt doch schon einen DOS-Befehl dafür. Warum nicht VERSION?" 2.2. Warum nicht VERSION? Wer schon einmal versucht hat, die Versionsnummern zweier Library- Files derselben Library mittels VERSION herauszufinden, dem wird vielleicht aufgefallen sein, daß scheinbar beide Files dieselbe Versionsnummer haben. Wenn man nicht weiß, ob das stimmt, akzeptiert man das möglicherweise einfach. Wenn man aber weiß, daß die Versionsnummern der beiden Files nicht gleich sind, kommt man ins Stutzen: Wie kann VERSION einfach behaupten, beide Files hätten die gleiche Versionsnummer? Nun, VERSION prüft zunächst, ob die Library sich bereits im Speicher befindet. Ist das nicht der Fall, wird sie in den Speicher eingelesen und ihre Versionsnummer ausgegeben. Anderenfalls, meint VERSION, ist es nicht mehr nötig die Library nocheinmal vom Datenträger zu lesen, sondern die Versionsnummer kann der im Speicher stehenden Library entnommen werden. Hier erklärt sich nun auch der Fehler: Beim Testen der ersten Library wird diese im Speicher installiert. Beim Versuch die zweite zu testen, erkennt VERSION, daß sie schon im Speicher steht und holt die Versionsnummer von dort. Diese Vorgehensweise trifft im übrigen nicht nur auf Libraries, sondern auch auf Devices zu. Weitere Unzulänglichkeiten des VERSION-Befehls sind: · es kann immer nur ein File getestet werden · keine Vergleichsfunktion und last but not least · kein Aufruf von der Workbench möglich All diese Mängel sind durch GetVer beseitigt und, die sich dadurch ergebenden neuen Möglichkeiten, durch ergänzende Funktionen imple- mentiert worden. Dabei erkennt GetVer wesentlich mehr Versions- nummern als VERSION (und als frühere GetVer-Versionen!), da das Verfahren der Versionsstringerkennung großzügiger arbeitet (s. Funktionsweise). 2.3. Systemvoraussetzungen Da einige neue Betriebssystemfunktionen verwendet werden, ist GetVer nur unter OS 2.0+ funktionsfähig! Der freie Rechnerspeicher sollte je nach Puffergröße ca. 40-80 KBytes betragen. 2.4. Installation Wenn Sie GetVer nur vom CLI aufrufen wollen, brauchen Sie nur das Programmfile "GetVer" in ein Verzeichnis Ihrer Wahl (am besten "C:") kopieren. Sollten Sie es auch von der Workbench aufrufen wollen, dann müssen Sie auch eines der beiden folgenden, in dem Packet ent- haltenen, Icons in dieses Verzeichnis (dann vorzugsweise "SYS:Tools") kopieren und ggf. in "GetVer.info" umbenennen: "GetVer.info" für OS 2.x/3.x und "GetVer.MWB.info" für MagicWB Beachten Sie für die CLI-Variante bitte, daß das Programm in einem Verzeichnis stehen sollte, das mittels PATH in den Suchpfad einge- bunden ist. 2.5. Funktionsweise GetVer prüft KEINE .info-Dateien und standardmäßig (ohne FORCE- Option (s. CLI-Aufruf)) nur Executables (Hex-Code "000003F3" als erste Bytes - also auch Libraries, Devices, Fonts...). Es durchsucht den Programmcode nach der Zeichenfolge "$VER:", die bei neueren Files standardgemäß den Versionsstring einleitet. Parallel dazu wird der Code nach dem Namen der Datei durchsucht. Wurde kein "$VER:" gefunden, dann wird versucht den Versionsstring mit Hilfe des Musters "Programmname #.#" zu identifizieren. Verständlicher Weise kann dies nicht in jedem Fall zum Erfolg führen und GetVer gibt dann schon mal einen String aus, der offensichtlich nicht der Versionsstring ist. So geschehen z. B. bei dem Programm "RKick", das kein "$VER:" aber als Syntaxbeschreibung für den CLI-Aufruf den Text "RKick [1.3|2.x]" enthält. Da er dem Muster entspricht, interpretiert GetVer diesen Text fälschlicher Weise als Versionsstring und gibt ihn aus. Sorry - aber um eine möglichst effiziente Erkennungsroutine zu realisieren, die auch Versionsstrings älterer Files erkennt, ist dieses Manko in Kauf zu nehmen. Glücklicherweise tritt dieser Umstand ja auch sehr selten auf. 3. Bedienung 3.1. CLI-Aufruf Die CLI-Variante von GetVer hat folgende Syntax: GetVer {} [VER|VERSION=n] [REV|REVISION=n] [FULL] [ALL] [SORT] [FORMAT] [FORCE] [CMP[=path]] [LIB|DEV] [BUF|BUFFER=n] Dabei haben die Argumente folgende Funktionen: Name Der oder die Namen der Files, von denen die Versionsnummer ermittelt werden soll, ggf. mit Angabe des Verzeichnisses. Bei Dateinamen mit den Endungen ".library", ".device", "-handler" und ".datatype" sucht GetVer automatisch in vorgegebenen Standardverzeichnis- sen (LIBS:, DEVS:, L:, SYS:Classes/Datatypes/) wenn die entsprechende Datei nicht im angegebenen Pfad gefunden wurde. Der Dateiname kann auch die üblichen Jokerzeichen enthalten. Beispiel: > GetVer asl.library gibt den Versionsstring der asl.library in LIBS: aus. VERSION=n/ Die Versions-/Revisionsnummer, die die zu prüfenden REVISION=n Files mindestens haben sollten. Sind die gefundenen Nummern einer Datei kleiner, dann wird das Bedingungs- kennzeichen auf 5 (WARN) gesetzt. Anderenfalls bleibt es auf 0. Ist eine Versionsnummer angegeben, dann entfallen die "'Datei': in X Bytes kein Versionsstring gefunden"- Ausgaben wenn keine Versionsnummer gefunden wurde. Durch Anhängen von "VER=0" kann man so auf einfache Weise diese Ausgaben herausfiltern. Beispiel: > GetVer LIBS:asl.library VERSION=39 zeigt die Version der asl.library und liefert WARN (5) wenn sie kleiner ist als 39. FULL Die normale Ausgabe des Versionsstrings endet hinter der Versionsnummer. Meistens stehen dahinter aber noch Informationen, wie z. B. das Erstellungsdatum. Mit FULL werden diese Informationen mit ausgegeben. Beispiel: > GetVer LIBS:asl.library FULL zeigt die Version und das Erstellungsdatum der asl.library. ALL Bei Verwendung des Jokerzeichens im Filenamen, prüft GetVer nur das erste mit der Jokervorgabe übereinstimmende File. Mit ALL werden alle mit der Vorgabe übereinstimmenden Files geprüft. Beispiel: > GetVer LIBS:a#? ALL zeigt die Versionsstrings aller Executables in LIBS:, die mit "a" anfangen. SORT Bei Überprüfung mehrerer Files wird normalerweise in der Reihenfolge vorgegangen, in der die Dateien auf dem Datenträger gefunden werden. Durch SORT werden die Files in alphabetischer Reihenfolge geprüft und ausgegeben. Bei der Angabe mehrerer Files in verschiedenen Pfaden, wird vorrangig nach den Pfaden sortiert und innerhalb dieser nach dem Dateinamen. Auf diese Weise stehen alle Dateien eines Verzeichnisses immer beieinander. Beispiel: > GetVer LIBS:[a|b|c]#? C:List ALL SORT listet die Versionen aller Executables in LIBS:, die mit "a", "b" oder "c" beginnen und von "C:List" in alpha- betisch sortierter Form. FORMAT Normalerweise wird einfach nur der gefundene Versionsstring ausgegeben. Bei manchen Files lautet dieser aber z. B. einfach nur "Version 1.3" und gibt so keine Auskunft darüber, welches File getestet wurde. Mittels FORMAT wird zuerst der Dateiname ausgegeben, dann der Pfad in dem das File gefunden wurde und erst dann der Versionsstring. Desweiteren wird die Ausgabe zur besseren Übersicht formatiert. Diese Option wird bei Verwendung des CMP-Arguments automatisch aktiviert! Beispiel: > GetVer LIBS:xpr#? ALL FORMAT zeigt die Versionen aller mit "xpr" beginnenden Libraries unsortiert, aber formatiert. FORCE Ohne dieses Argument überprüft GetVer nur ausführbare Files (Hex-Code "000003F3" als erste Bytes einer Datei - also auch Libraries, Devices, Fonts, ...). Durch Angabe von FORCE kann man auch andere Files überprüfen lassen (z. B. ASCII-Files). Beispiel: > GetVer GetVer.guide FORCE erzwingt das Lesen des "GetVer.guide"s, das ja kein Executable ist. CMP Um festzustellen, ob neue Libraries oder Devices neuer CMP=path sind als die, welche man schon besitzt, kann man das Argument CMP benutzen. Es liest zuerst das File aus dem angegebenen Pfad und dann aus LIBS: oder DEVS:, je nachdem ob das File eine Library oder ein Device ist, und listet beide auf. Wenn man als Vergleichspfad nicht LIBS: oder DEVS: benutzen will, sondern beliebige andere Pfade, dann kann man diese, durch Kommas getrennt, mit einem Gleich- heitszeichen direkt an das Argument CMP anhängen. Dadurch lassen sich dann nicht nur Libraries oder Devices, sondern jede Art von Files miteinander vergleichen. Wenn zusätzlich das Argument LIB bzw. DEV (s. dort) angegeben ist, dann wird entsprechend der Option mit einer Library oder einem Device aus dem Speicher, und nicht aus LIBS: oder DEVS: verglichen. Diese Option aktiviert automatisch die FORMAT-Option! Beispiele: > GetVer DF0:Libs/reqtools.library CMP gibt die Versionen der "reqtools.library" in DF0:Libs/ und in LIBS: aus. > GetVer xpkNUKE.library CMP=DF1:Libs,LIBS:compressors gibt die Versionen der "xpkNUKE.library" im aktuellen Pfad, DF1:Libs/ und LIBS:compressors/ aus. LIB Mit LIB wird das angegebene File als Library interpretiert und nicht von Disk gelesen, sondern aus dem Speicher. Beispiel: > GetVer exec.library LIB zeigt die Version der im Speicher stehenden "exec.library". DEV Mit DEV wird das angegebene File als Device interpretiert und nicht von Disk gelesen, sondern aus dem Speicher. Beispiel: >GetVer timer#? DEV zeigt die Version eines im Speicher stehenden, mit "timer" beginnenden Devices (also in der Regel des "timer.device"s). BUFFER=n Normalerweise arbeitet GetVer mit einem Puffer von 2 KBytes Größe, in den die Filedaten eingelesen und nach dem Versionsstring durchsucht werden. Durch Angabe von BUFFER=n kann man diese Größe verändern, wobei n eine Zahl zwischen 1 und 20 sein kann und die Puffergröße in KByte angibt. Durch eine Vergrößerung des Puffers wird die Ausfüh- rungszeit teilweise extrem verkürzt. Beispiel: >GetVer LIBS:#? ALL SORT FORMAT VERSION=0 BUFFER=20 zeigt die Versionen aller in LIBS: stehenden Executables in denen ein Versionsstring gefunden wurde, in sortierter und formatierter Form, und setzt dazu den Puffer auf 20 KBytes. 3.2. Workbench-Aufruf Es gibt zwei Möglichkeiten GetVer von der Workbench zu aktivieren: 1. Klicken Sie einmal auf das GetVer-Icon. Halten Sie dann eine der beiden SHIFT-Tasten gedrückt und klicken Sie wiederum einmal auf die Icons der Dateien, die Sie prüfen möchten. Das letzte dieser Icons klicken Sie (bei gedrückter SHIFT-Taste) doppelt an. 2. Klicken Sie doppelt auf das GetVer-Icon. Es erscheint ein GetVer- AppIcon mit dem Namen "GetVer3.02u" direkt auf dem Workbench- fenster (bzw. -screen). Halten Sie nun eine der beiden SHIFT-Tasten gedrückt und klicken Sie einmal auf die Icons der zu prüfenden Dateien. Bei dem letzten dieser Icons halten Sie den linken Mausknopf gedrückt und lassen die SHIFT-Taste wieder los. Wenn Sie nun den Mauszeiger auf das AppIcon bewegen, sollten alle anderen angewählten Icons Ihrer Bewegung folgen. Wenn der Mauszeiger (dem das zuletzt angeklickte Icon anhängt) auf das GetVer-AppIcon zeigt, lassen Sie den Mausknopf wieder los. Augenblicklich nehmen alle angewählten Icons, die Ihren Bewegungen gefolgt waren, Ihren ursprünglichen Platz wieder ein. Um das AppIcon wieder zu entfernen, klicken Sie das GetVer-Icon erneut doppelt an. Bei beiden Varianten beginnt GetVer nun mit der Überprüfung der von Ihnen ausgewählten Files und zeigt das Ergebnis in einem Fenster an. Nachdem Sie die Ausgabe gelesen haben, schließen Sie das Fenster entweder durch einen Klick auf das Schließsymbol in der linken oberen Ecke oder durch drücken von . Workbench-Argumente Die Workbench-Variante akzeptiert die beim CLI-Aufruf ange- gebenen Argumente, so wie dort beschrieben, als Tooltypes des Programmicons. Die mitgelieferten Programmicons enthalten folgende Tooltypes: VERSION=0 (FULL) ALL SORT FORMAT (CMP(=)) (FORCE) (BUFFER=<1-20>) In Klammern eingeschlossene Tooltypes gelten dabei als inaktiv. 3.3. Das "Graphical-User-Interface" (GUI) Um die Parameter, die beim Start von der Workbench durch die Tooltypes vorgegeben werden, vorübergehend zu ändern, ohne die Tooltypes manipulieren zu müssen, genügt ein Doppelklick auf das AppIcon. In dem daraufhin erscheinenden Fenster kann man die Parameter folgendermaßen anpassen (die nachfolgend großgeschriebenen Funktionsnamen entsprechen den Argumenten der CLI-Variante): FULL - Gesamten Versionstext ausgeben ALL - Alle passenden Dateien prüfen SORT - Sortierte Ausgabe FORMAT - Formatierte Ausgabe FORCE - Nicht-Ausführbare Dateien prüfen Das Anklicken der Checkboxes de-/aktiviert die jeweilige Funktion. CMP - Vergleichen Durch Anwählen der CMP-Checkbox wird gleichzeitig ein Stringgadget aktiviert, in das man gegebenenfalls den Namen des Verzeichnisses eintragen kann, mit dessen Inhalt die Files verglichen werden sollen. BUFFER - Puffergröße (KB) FUNKTION IN DER UNREGISTRIERTEN VERSION NICHT AKTIV! Die zu benutzende Puffergröße kann entweder direkt in das kleine Stringgadget eingegeben werden, oder durch ver- schieben des schwarzen Knopfes innerhalb des Slider-Gadgets verändert werden. Dazu klicken Sie auf das kleine, schwarze Kästchen in dem langen, waagerechten Rahmen und bewegen die Maus bei gedrückter Taste nach links oder rechts. Das Kästchen folgt innerhalb des Rahmens Ihren Bewegungen und repräsentiert dabei die Größe des Pufferspeichers in KBytes: ganz links bedeutet 1 KB, ganz rechts hingegen 20 KB. In dem kleinen Stringgadget wird die aktuelle Puffergröße ange- zeigt. LIB/DEV - im Speicher prüfen Durch Klicken auf dieses Cycle-Gadget kann eingestellt werden, ob auf Disk gespeicherte Files überprüft werden sollen (Nichts), oder im Speicher stehende Libraries bzw. Devices. VERSION - Filtern wenn keine Versionsnummer Diese Checkbox ist angewählt, wenn in den Tooltypes eine Mindestversionsnummer vorgegeben ist. Da von der Workbench der Rückgabewert nicht ausgewertet wird, hat diese Funktion hier ausschließlich eine Filterwirkung und entspricht genau dem setzten der Versionsnummer auf Null (VERSION=0). Dadurch wird der Hinweis "...keine Versionsnummer gefunden" nicht ausgegeben. Alle Funktionen können auch durch Druck auf die Taste, deren Buchstabe unterstrichen ist, eingestellt werden. Das Einsteller-Fenster hat neuerdings auch ein Menü, mit folgenden Punkten und Bedeutungen: Information... Gibt eine kurze Information über das Programm und dessen Status aus. Beenden Beendet das Programm vollständig. Damit ist es nicht mehr nötig, zum Beenden erst zahlreiche Fenster zu öffnen, um schließlich einen Doppelklick auf das Programm-Icon aus- führen zu können. Jedem einigermaßen erfahrenen Amiga-User sollte die Bedeutung der Gadgets und Ihre Anwendung aber auch ohne Erklärungen schnell klar werden. 4. Sonstiges 4.1. Was bringt die Zukunft? Eigentlich war auch beabsichtigt, GetVer zu lokalisieren. Doch leider habe ich in dieser Hinsicht noch einige Probleme mit meinem Compiler. Ich hoffe, diese bald beheben zu können. 4.2. Danksagungen Mein Dank richtet sich an Volkmar Mai, der schon nach der ersten Veröffentlichung gute Ideen zur Verbesserung des Programms beigesteuert hat, sowie an Maik Wieland, der nicht nur als Beta-Tester tätig war, sondern freundlicherweise auch DFÜ-Nach- richten von Anwendern früherer Versionen an seiner Mail-Adresse entgegen genommen und an mich weiter geleitet hat (dieser Umweg war leider nötig, da ich wegen technischer Probleme mit der Telefon- anlage nicht in der Lage war, ans Telefonnetz zu gehen). Desweiteren bedanke ich mich bei Jürgen Urbanek, dessen Ideen die meisten Änderungen seit 3.00 ausmachen.