GetVer Version 2.10 von Jörg Schuchardt (02.02.93) (PUBLIC DOMAIN) Hinweis: Die Benutzung von GetVer sollte eigentlich ohne jedes Risiko sein. Sollten dennoch Schäden auftreten, die auf die Anwendung von GetVer zurückzuführen sind, so übernimmt der Autor keinerlei Haftung! Der Gebrauch des Programms geschieht auf eigene Verantwortung! GetVer ist Public Domain. Es darf aber nur als Paket und in keiner Weise modifiziert weiter gegeben werden. Die Übernahme in eine PD-Serie ist gestattet. Ich bitte aber darum mich zumindest davon in Kenntnis zu setzen. Zu dem Paket gehören folgende Files: GetVer (19892 Bytes) - das Programm selbst GetVer.dok ( 8948 Bytes) - diese Anleitung GetVer.History ( 2537 Bytes) - die Entstehungsgeschichte von GetVer Bedingt durch seine Vorgehensweise ist die Arbeit von GetVer nicht zwangsläufig von Erfolg gekrönt. Mit allen mir zur Verfügung stehenden Programmen und über 40 Libraries lief es aber tadellos. Sollten dennoch wider Erwarten Bug-Reports oder Verbesserungsvorschläge an mich weiterzuleiten sein oder um mich aus einem anderen Grund zu kontaktieren, bin ich (noch) unter folgender Mailbox-Adresse zu erreichen: M.Wieland@LINK-GOE.ZER MfG Jörg Schuchardt Was ist GetVer? GetVer ist aus dem Programm LibVer V1.41 hervorgegangen. Es liest nun auch den Versionstext aus Programmen und, wie LibVer, aus Bibliotheken, die sowohl auf Disk als auch im Speicher stehen können. Dabei werden jetzt auch die meisten älteren Libraries (Kick 1.2 & 1.3) korrekt ausgelesen. GetVer wurde unter den Kickstarts 1.3 und 2.04 getestet und angepasst und ist auf beiden lauffähig. Der Betrieb unter 1.2 bzw. 2.1 und 3.x konnte nicht getestet werden, da keine Rechner mit diesen Versionen zur Verfügung standen. Es sollte aber auch hier keinerlei Probleme geben. Falls doch, bitte ich darum mir dies unter der oben angegebenen Anschrift mitzuteilen. Warum GetVer und nicht den CLI-Befehl VERSION? Der Befehl VERSION hat den Nachteil, daß Versionsnummern von Bibliotheken, die schon im Speicher installiert sind, auch aus dem Speicher gelesen werden. D. h. wenn man zwei Versionen von einer Library hat, kann man nicht feststellen, welches die neuere ist. Denn beim Lesen der ersten Bibliothek wird diese im Speicher installiert und der Versuch die zweite zu lesen scheitert, da auf die im Speicher stehende Version zugegriffen wird. Ergebnis: es haben beide Libraries (scheinbar) die selbe Versionsnummer! GetVer geht anders vor: Es sucht im Library-File nach dem Versionsstring. Bestimmte Merkmale weisen (manchmal mehr, manchmal weniger eindeutig) auf den Versionstext hin. Nach diesen Merkmalen sucht GetVer, filtert den Versionstext heraus und zeigt ihn dann an. Da dazu das File jedesmal wieder gelesen wird, kann man zwei Versionen der gleichen Bibliothek vergleichen. Natürlich ist es auch möglich, installierte Libraries zu überprüfen und z. B. mit einer Diskettenversion zu vergleichen. Wie wird GetVer aufgerufen? Die Syntax ist einfach: GetVer [][] [] [] [FULL] [ALL] [SORT] [LIB [MEM] [CMP]] Die Option [] beschreibt einfach den Pfad, in dem nach der Bibliothek gesucht werden soll. Ist sie nicht angegeben, so wird im aktuellen Verzeichnis nach dem File gesucht. Zusammen mit der Option [LIB] gilt weiterhin, daß wenn das File nicht gefunden wurde, GetVer selbständig noch im 'LIBS:' Verzeichnis sucht. Dieses muß als Suchpfad also nicht extra angegeben werden! Die Optionen [] und [] entsprechen denen des CLI-Befehls VERSION, d. h. der Versions- und Revisionsnummer, die das File mindestens haben sollte. Ist das nicht der Fall wird der Rückgabewert auf 5 gesetzt. Damit ist eine Überprüfung ob die Versionsnummer ausreicht mittels IF WARN ... ENDIF möglich. Zusammen mit der [ALL]-Option bezieht sich GetVer auf die niedrigste Versionsnummer aller durchsuchten Files. Es werden dann nur noch die Files aufgelistet, bei denen auch ein Versionsstring gefunden wurde. Hat eines der Programme eine niedrigere Versionsnummer als durch [] und [] angegeben, wird der Rückgabewert ebenfalls auf 5 gesetzt. Die Option [FULL] entspricht ebenfalls dem Standard Befehl VERSION. Mit ihr wird der komplette Versionsstring ausgegeben. Die Option [ALL] ermöglicht es die Versionsstrings aller durch die Angabe eines Jokers (s. Hinweis) spezifizierten Files auszugeben. Ist die [LIB]-Option nicht angegeben, so werden Files, bei denen der Versionsstring nicht gefunden wurde, nicht mit ausgegeben! Nochmal vielen Dank an Volkmar Mai für die Idee zu dieser Funktion. Die Option [SORT] sortiert vor der Ausgabe die durch den Joker (s. Hinweis) spezifizierten Files. Das heißt, daß bei Angabe der Option [ALL] alle mit der Jokervorgabe übereinstimmenden Files alphabetisch sortiert angezeigt werden. Ohne [ALL] wird das alphabetisch erste zutreffende File ausgegeben. Die Option [LIB] teilt GetVer mit, daß eine Library untersucht werden soll, da hierfür ein anderes Suchverfahren eingesetzt wird. Die Option [MEM] ist nur in Verbindung mit der Option [LIB] nutzbar und arbeitet mit der vom Standard Befehl VERSION benutzten Technik. Ist die Bibliothek nicht im Speicher, dann wird im angegebenen Pfad oder im aktuellen Verzeichnis bzw. (bei Fehlversuch) im Verzeichnis 'LIBS:' nach ihr gesucht. Ist die angegebene Library im Speicher, dann wird von dort der Versionstext herausgezogen. Momentan ist hierbei noch zu beachten, daß die Namen der Libraries dem angegebenen Pfad (bzw. LIBS:) entnommen werden und dann erst die Überprüfung durchgeführt wird. Die Option [CMP] (compare) ist ebenfalls nur mit [LIB] einsetzbar und zeigt die Versionen der angegebenen Library in LIBS: und dem durch [] spezifizierten Verzeichnis. Mit zusätzlicher Angabe der Option [MEM] werden die Versionen der Library im Speicher und dem gewählten Verzeichnis ausgegeben. Dadurch ist ein direkter Vergleich der eigenen und der (vermutlich) neueren Library möglich. Auch für diese Idee richtet sich mein Dank an Volkmar Mai. Hinweis: Seit LibVer Version 1.40 kann der Stern (*) als Jokerzeichen für beliebig viele Zeichen in den Namen gesetzt werden. Das ist natürlich auch bei GetVer möglich. Die Position der Optionen (bis auf [], die natürlich vor dem Librarynamen stehen muß) kann beliebig gewählt werden. Das erste Text- argument, das keine Option ist wird als Libraryname benutzt. Das erste numerische Argument als Versionsnummer, das zweite als Revisionsnummer. Beispiele: GetVer c:list - liest die Versionsnummer des in C: stehenden LIST-Befehls GetVer GetVer FULL - liest seinen eigenen Versionsstring komplett aus GetVer ALL i* SORT - liest die Versionsnummern aller mit I beginnenden Files und gibt sie alphabetisch sortiert aus GetVer list 37 3 - liest die Versionsnummer des LIST-Befehls, gibt sie aus und prüft ob diese gleich oder höher 37.3 ist (Abfrage: IF WARN ..do sth.. ENDIF) GetVer DF0:libs/diskfont.library LIB - liest die Version der 'diskfont.library' von DF0: im Verzeichnis 'libs' GetVer exec.library LIB MEM - liest die Version der 'exec.library' aus dem Speicher GetVer CMP DF0:libs/asl.library LIB - liest die Version der 'asl.library' aus LIBS: und von DF0:libs/ GetVer MEM DF0:libs/rct.library CMP LIB - liest die Version der 'rct.library' im Speicher und von DF0:libs/ GetVer LIB *.library ALL - gibt die Versionen aller Libraries aus GetVer rexx*.library SORT LIB - liest die Version der alphabetisch ersten Library, die mit "rexx" beginnt und mit ".library" endet Tip: Um in einer längeren Liste die Files herauszufiltern, bei denen kein Versionsstring gefunden wurde, einfach als Versions- und Revisionsnummer "0 1" übergeben. Dadurch werden nur die Files ausgegeben in denen auch ein Versionsstring gefunden wurde und da wohl keines davon unter Version 0.1 liegen wird, bleibt der Rückgabewert auf 0. Wichtig: Bei Benutzung der [MEM] Option muß man die Groß- und Kleinschreibung des Bibliotheknamens beachten! Beim Zugriff auf Diskettenversionen ist dies nicht nötig.