15.05.1994 Henry Rolofs MausNet: Henry Rolofs @ KR C h i p m u n k Was ist Chipmunk und wo zu ist es gut? Mit Chipmunk lassen sich ASCII-Texte als Mail direkt in die Datenbank von CAT schreiben. Die Idee dazu entstand aus der šberlegung heraus, Diff's ber die Infodateien der Maus direkt in CAT als Mail anzeigen zu lassen. Dazu wird Chipmunk in einer INF-Datei der Name der Textdatei sowie ein paar Zusatzinformationen (Betreff, Absender usw.) bergeben. Die Textdatei kann von einem beliebigen TOS-Programm erstellt werden welches auch von Chipmunk aufgerufen werden kann. M”glich w„re z.B. ein Terminkalender, der die Termine als Mail in die Datenbank von CAT schreibt. Als Beispiel liegt ein kleines Diffprogramm, speziell fr die ITG-Infodatei der Maus, bei. Dazu sp„ter mehr. Warum der Name Chipmunk? (gestreiftes nordamerikanischen Eichh”rnchen) Irgendeinen Namen muž das Programm ja haben, warum nicht den? Zumal mir diese kleinen Tierchen bei meinem letzten, und bislang einzigen, Besuch in den USA sehr gefallen haben. Aužerdem passt der Name gut in den DFš-Zoo (Maus, CAT). Worauf l„uft Chipmunk? Nunja, auf jedem Rechner, auf dem auch Cat l„uft. Ein TOS-Rechner mit einer beliebigen Menge RAM > 1MB mit einer beliebigen Grafik-Aufl”sung (naja, Cat braucht mindestens 640*200). Einige Rckmeldungen von Medusa-Usern (am besten mit Sachspende, lechts) w„ren sehr angenehm. Nun ein paar Warnungen. +-------------------------------------------------------------------------+ | Chipmunk schreibt die Mails direkt in die Datenbank von CAT. Wem das zu | | unsicher oder gef„hrlich erscheint, der soll die Finger davon lassen | | und kann die Bits und Bytes, die das Programm auf der Platte belegt | | direkt wieder recyceln und anderweitig verwenden. | +-------------------------------------------------------------------------+ Da die Mails direkt in die Database von CAT geschrieben werden ist es wichtig, die 'passende' CAT-Version zu benutzen. Bislang getestet ist Chipmunk mit CAT 2.52 und 2.6. Chipmunk testet selber, soweit m”glich, die Datenbankversion von CAT. Trotzdem sollte niemand Chipmunk auf eine ungetestete CAT-Version loslassen ohne vorher eine Kopie von der Datenbank zu machen. Soweit m”glich, versucht Chipmunk Fehleingaben abzufangen. Trotzdem wird dies sicher nicht in allen F„llen gelingen. Fr falsche Bedienung, unsinnige INF-Dateien usw. ist der Benutzer, also Du selber verantwortlich. Im Prinzip lassen sich mit Chipmunk beliebige Dateien in die Database schreiben. Auch hier gilt das Prinzip der Selbstverantwortung, daž nur ASCII-Texte eingebunden werden, da CAT mit anderen Dateien eventuell Probleme hat. Alles andere als ASCII-Dateien als Mailtext w„re auch unsinnig. Ein Hallo an alle Wagemutigen die bis hierhin mitgelesen haben und sich trotz aller Warnungen entschlossen haben, Chipmunk zu benutzen oder es wenigstens etwas genauer in Augenschein zu nehmen. Chipmunk kann frei kopiert und weitergegeben werden, solange dies nicht kommerziell geschieht. Weiterhin ist die Weitergabe nur als Ganzes, das heižt das komplette Archiv (ohne Dateien daraus zu entfernen oder beizufgen oder zu ver„ndern) erlaubt. Chipmunk, und alle Programme in diesem Archiv, sind Freeware, kosten also nichts. Fr die, die es trotzdem nicht lassen k”nnen und dem Autor unbedingt in Form einer Spende ihre Anerkennung ausdrcken wollen ist hier meine Kontonummer. Henry Rolofs Stadtsparkasse Duisburg Bankleitzahl: 350050000 Kontonummer: 312006893 (Bitte Zweck und Namen mit angeben) Zum Archiv geh”ren folgende Dateien. CHIPMUNK CHIPMUNK.INF CHIPMUNK.TXT CHIPMUNK.TTP CHIPMUNK.UPL ITG_DIFF.TTP LOESCHE.INF LOESCHE.TTP OUTFILE.TXT Bevor es mit der eigentlichen Beschreibung los geht m”chte ich an dieser Stelle ein grožes Dankesch”n an Dirk Steins fr die freundliche und hilfreiche Untersttzung aussprechen. Es kann also losgehen. Damit Chipmunk weiž, was es berhaupt machen soll, wird ihm der Databasepfad und der Pfad/Name einer INF-Datei bergeben. Eine INF-Datei fr Chipmunk hat z.B. folgenden Aufbau. BITG_DIFF.TTP: Gruppen„nderungen ; Betreff AITG_DIFF.TTP ; Absender ;EHenry Rolofs @ KR ; Empf„nger GChipmunk ; Gruppe ;FD ; CAT-Status DITG_DIFF.TXT ; Textdatei KE:\CAT\MAUS_KR\DATABASE ; Kommandozeile PITG_DIFF.TTP ; Programm - ; Trennzeichen KLOESCHE.INF ; Dateien aus LOESCHE.INF PLOESCHE.TTP ; werden gel”scht Es wird vom Anfang der INF-Datei her Block fr Block abgearbeiteit. Ein Block wird von zwei Zeilen die mit einem '-' beginnen bzw. Dateianfang oder Dateiende eingerahmt. Jede Zeile in einem Block f„ngt mit einem Schlsselbuchstaben an, der die Bedeutung der Zeile angibt. Die Reihenfolge der Zeilen in einem Block ist egal. Kommt eine Zeile mit dem gleichen Schlsselbuchstaben mehrfach vor, wird die letzte der entsprechenden Zeilen beachtet. Zu den Schlsselbuchstaben. B Betreff unter dem die Mail einsortiert wird A Absender der Mail E Empf„nger, nur wichtig fr die Gruppe PRIVATE G Name der Gruppe in der die Mail geschrieben wird. (Die Gruppe muž bereits existieren) F Hier k”nnen Flags fr die Mail angegeben werden, die gleichen wie sie auch CAT intern verwendet. L, Gelesen F, Gefilterd I, Interessant T, Teill”schung D, Totall”schung K, Kommentieren B, Beantworten 1, Userflag 1 2, Userflag 2 V, Vererben D Name der Textdatei die als Mail eingebunden werden soll. p Ein Programm welches vor dem Einbinden der Text-Datei aufgerufen wird. K Kommandozeile fr dieses Programm. Diese wird dem Programm nach dem ARGV-Verfahren bergeben, welches mittlerweile jedes Programm beherschen sollte. Zur Arbeitsweise von Chipmunk. Jede Zeile der INF-Datei wird bis zum Ende oder ersten Auftreffen eines ';' eingelesen. Dann wird die Zeile von hinten bis zum ersten Zeichen mit einem ASCII-Wert > $20 (Leerzeichen) gekrzt. Da soll dazu dienen, daž nicht TABs oder „hnliches im Betreff, Absender usw. auftreten k”nnen. Da die Zeilen nur bis zu einem m”glichen ';' eingelesen werden, kann dieses Zeichen natrlich nicht im Betreff oder den anderen Angaben vorkommen. Mit dieser kleinen Einschr„nkung sollte es sich aber leben lassen. Wenn in einem Block eine P-Zeile vorhanden ist wird zuerst dieses Programm, und wenn vorhanden (K-Zeile) mit Parametern, gestartet. Im allgemeinen erstellt das Programm die Datei die eingebunden werden soll. Muž aber nicht sein. Falls das Programm einen Returncode von 0 hat, wird mit der Bearbeitung des Blocks fortgefahren, ansonsten mit der Bearbeitung des n„chsten Blocks begonnen. Als n„chstes wird geprft, ob eine G-Zeile (Gruppe), A-Zeile (Absender), B-Zeile (Betreff) und eine D-Zeile (Textdatei) angegeben ist. Falls als Gruppe PRIVATE (PMs) angegeben ist wird zus„tzlich berprft ob eine E-Zeile (Empf„nger) vorhanden ist. Ist die šberprfung erfolgreich wird noch getestet ob's die Datei gibt und deren L„nge gr”žer 0 ist. Wenn all das erfllt ist wird die angegebene Datei als Mail in die Gruppe einsortiert. šberlange Mails (> 14 KB) werden automatisch gesplittet. Die Gruppe, in der die Mail einsortiert werden soll muž vorher schon in der Database von CAT existieren. Beim Vergleich er Gruppennamen wird die Grož/klein-Schreibung nicht bercksichtigt. Um sich selber eine Gruppe einzurichten gengt es, folgendes kleines Outfiele in CAT einzufgen. #A0815@XYZ DL VChipmunk Weigene Gruppe eingerichtet E199411111111 GChipmunk :Hallo, ich bin'. #LOG :Gruppe eingerichtet # Ein Beispiel OUTFILE.TXT liegt dem Archiv bei. Bitte nicht versuchen, mit einem solchen Outfile eine Gruppe PRIVATE einzurichten da dieser Name fr die pers”hnliche Gruppe (PMs) reserviert ist. Noch etwas wichtiges. Zur Erzeugung der Messages-ID wird von Chipmunk die aktuelle Urzeit/Datum und die Position die die Mail beim Einsortieren in die Gruppe erh„lt benutzt. Das soll erstens sicherstellen daž keine ID erzeugt wird die es schon in der Database gibt, zweitens soll es keine 'gltige' Mausnet-ID sein damit es zu keinen 'Verwechselungen' kommt. Falls man die Mails in die Gruppe PRIVATE (PMs) einsortieren l„žt werden beim n„chsten Tausch natrlich auch Statusmeldunegn an die Maus geschickt. Diese meckert sie (richtigerweise), als nicht gltig an und st”rt sich nicht weiter daran. Natrlich lassen sich solche Mails auch 'beantworten' was allerdings mehr als unsinnig ist. Auch in diesem Fall wird die Mail, bzw. die Kommentar-ID, als ungltig abgelehnt. Was bei einer darauf folgenden Wildwestverkettung passiert h„ngt von dem Absender der kommentierten/beantworteteten Mail ab. Deshalb sollte als Absender der mit Chipmunk einsortierten Mails auch keine gltigen MausNet-Adresse angegeben werden. Als zus„tzliche Sicherheit wird der Mail noch die Distribution lokal gegeben. Wie startet man Chipmunk? Dazu gibt es zwei M”glichkeiten 1. Als seperates Programm. Chipmunk kann aus Scripts, vom Desktop, usw. aufgerufen werden. Eben wie ein selbstst„ndiges Programm. Dazu ben”tigt es nur die Angabe des Databasepfades und einer INF-Datei. Beim n„chsten Start von CAT sind die Texte als Mail eingebunden. Auch die Angabe den Ungelesenen/Neuen-Mails ist entsprechend angepasst worden. 2. Also I/O-Filter in CAT. Chipmunk kann als I/O-Fiter in CAT eingebunden werden. Da Chipmunk in den Dateien der Database schreibt kann es natrlich zu Problemem kommen, wenn CAT selber gerade auf diese Dateien zugreift. Daher sollte Chipmunk nur als Filter 'nach Einsortieren' des Outfiles angemeldet werden. Zu diesem Zeitpunkt sind die entsprechenden Dateien von CAT geschlossen und Chipmunk kann diese bearbeiten. Einen Nachteil hat dies allerdings. Die Daten aus der GRUPPEN.POS, in der auch vermerkt ist wieviele ungelesene und neue Mails es in den Gruppen gibt, ist zwar von CAT geschlossen worden so daž Chipmunk diese Datei bearbeiten kann. Allerdings h„lt CAT die Informationen dieser Datei im Speicher, so das es sich nicht nach den von Chipmunk ge„ndereten Werten in der GRUPPEN.POS richtet. Das bewirkt, daž in der Auswahlbox der Gruppen zum Lesen noch die alten Werte angezeigt werden. Beim Anw„hlen und Einstieg zum Lesen in die Gruppe korrigiert CAT die Anzeige und richtet sich nach den wirklich vorhandenen Mails in der Gruppe. Dies wird vielleicht, wenn m”glich, in einer sp„teren Version von CAT ge„ndert. Wer diesen kleinen Nachteil in Kauf nimmt, hat allerdings auf der anderen Seite den Vorteil, daž nach dem Einsortieren des Outfiles die entsprechenden Mails, z.B. Diffs ber die Infodateien der Maus schon in der Database stehen. Es wird davon abgeraten Chipmunk, als anderen I/O-Filter ('fr In-/Outfile', 'fr Messages') zu benutzen, da dort m”glicherweise nicht alle Dateien von CAT geschlossen sind. Als I/O-Filter fr 'nach Einsortieren' wird einfach $D INF-Datei bergeben. 4D steht fr den Databasepfad den CAT selber einsetzt und INF-Datei ist der Name der entsprechenden INF-Datei fr Chipmunk (z.B. CHIPMUNK.INF). Weiterhin sollte man Chipmunk unter einem Multitasking-Betriebssystem nicht parallel zu CAT oder CATPUTZ starten, oder sonst einem Programm welches auf die Dateien der Database zugreift. Chipmunk und auch die anderen beiden Programme machen keinerlei Ausgaben auf dem Bildschirm, so daž es diesbezglich keine Probleme mit anderen Programmen geben sollte. Damit sich direkt etwas mit Chipmunk anfangen l„žt, liegen zwei kleine Programme bei. ITG_DIFF.TTP und LOESCHE.TTP. Ersteres erstellt eine DIFF-Datei ber ITG.TXT und ITG.BAK. Das zweite Programm l”scht alle Dateien, die in einer INF-Datei angegeben sind. Als Beispiel nochmals die oben angebenen INF-Datei fr Chipmunk. BITG_DIFF.TTP: Gruppen„nderungen ; Betreff AITG_DIFF.TTP ; Absender ;EHenry Rolofs @ KR ; Empf„nger GChipmunk ; Gruppe ;FD ; CAT-Status DITG_DIFF.TXT ; Textdatei KE:\CAT\MAUS_KR\DATABASE ; Kommandozeile PITG_DIFF.TTP ; Programm - ; Trennzeichen KLOESCHE.INF ; Dateien aus LOESCHE.INF PLOESCHE.TTP ; werden gel”scht Zuerst wird das Programm ITG_DIFF.TTP mit dem Pfad der Database alsParameter gestartet. Dieses Programm erstellt aus der ITG.TXT und der ITG.BAK, sofern vorhanden, ein Diff-Datei mit dem Namen ITG_DIFF.TXT im aktuellen Verzeichnis. Falls sich keine Diff-Datei erstellen liež, beendet sich ITG_DIFF.TTP mit einem Returncode != 0. Andernfalls wird danach die Datei ITG_DIFF.TXT in die Gruppe Chipmunk mit den gemachten Angaben (Absender, Betreff usw.) eingebunden. Danach wird das Programm LOESCHE.TTP gestartet mit der Angabe einer INF-Datei (nicht zu verwechslen mit der INF-Datei von Chipmunk). Dieses Programm l”scht alle in der Datei angegebenen Dateien. Bei mir sieht die LOESCHE.INF so aus. E:\CAT\MAUS_KR\DATABASE\*.BAK ITG_DIFF.TXT Zuerst werden alle BAK-Dateien im Databaseordener gel”scht und anschliežend die Datei ITG_DIFF.TXT im aktuellen Verzeichnis (fr eine Datei, die im aktuellen Verzeichnis gel”scht werden soll, braucht der Pfad nicht mit bergeben werden). Als Joker-Zeichen k”nnen '?' oder '*' verwendet werden. Unterverzeichnisse k”nnen nicht gel”scht werden. Nun zum ITG_DIFF.TTP. Wie schon gesagt/geschrieben wird beim Start der Databasepfad bergeben und eine Datei ITG_DIFF.TXT im aktuellen Verzeichnis erstellt. Wenn es keinen Unterschied zwischen der ITG.TXT und der ITG.BAK gibt, oder die Diff-Datei die L„nge von 0 aufweist wird diese wieder gel”scht und das Programm beendet sich mit einem Returncode != 0. Ein Eintrag in der ITG_DIFF.TXT kann z.B. so aussehen: *Erstellt von ITG_DIFF.TTP, Version 0.15* *Achtung!* *Gruppe Fahrtwind ist 2 mal vorhanden* *Mausgruppe wurde ge„ndert* *Neu:*Stargazer Flags: LBS+V+G-P-$- Chef: Thomas Schleuž Netzname: Astronomie Diskussionen unter Sternguckern und Interessierten *Alt:*Stargazer Flags: LBS+V+G-P-$- Chef: Thomas Schleuž Diskussionen unter Sternguckern und Interessierten In solch einer Meldung k”nnen die Begriffe 'Netzgruppe', 'Mausgruppe' und 'Lokalgruppe' auftauchen. 'Netzgruppe' steht fr eine Gruppe im MausNet die es in der lokalen Maus nicht gibt. 'Mausgruppe' steht fr eine Gruppe im MausNet die es auch in der lokalen Maus gibt. 'Lokalgruppe' steht fr eine Gruppe die es nur lokal in der Maus gibt. In dem Beispiel oben taucht zus„tzlich noch die Meldung auf, daž eine Gruppe mehrfach in der ITG.TXT vorhanden ist. So etwas sollte nicht, kann aber vorkommen. Wie man sehen kann hat die Gruppe Stargazer (lokaler Name in der Maus) einen neuen Namen im Netz bekommen. Einfach mal ausprobieren was fr Meldungen alles kommen k”nnen. Im wesentlichen sehen die so aus wie dieses Beispiel hier. Hier eine Auflistung der m”glichen Gruppen-Flags wie ich sie von einem freundlichen Programmierer eines MausNetfrontend's bekommen habe. :-) Den Lese- und Schreibzugriff beschreiben L bzw. S: + Zugriff der betreffenden Art zur Zeit erlaubt bzw. eingeschaltet. B Zugriff zur Zeit abgeschaltet, aber durch einfaches Bestellen anschaltbar. C -----"------"---------"------, muž beim Chef beantragt werden. - Zugriff unm”glich. P Zugriff angeschaltet und kann nicht abgeschaltet werden (Abbestellen unm”glich). S Netzgruppe ist nicht lokal vorhanden. SysOp fragen.- macht natrlich beim Lesen wenig Sinn (dann sollte die Gruppe gleich geheim sein). P bezieht sich natrlich nur auf den Lesezugriff. Zur Zeit w„re das bei ™ffentlich der Fall. Da wrde brigens auch die Angabe des Chefs fehlen. Weitere Flags: V Vernetzt (+) oder lokal (-), (=) ("Doppel-Minus" :-)) fr lokal nichtvorhandene Netzgruppe, evtl. sp„ter auch Angaben zu Gates? G User ist Chef (*), Mitglied (+) oder keins von beiden (-) P Es gibt einen Programmteil (+) oder nicht (-) $ Zugriff fr Nichtzahler eingeschr„nkt (+) oder nicht (-) Weitere Flags k”nnen bei Bedarf eingefhrt werden. Damit ITG_DIFF.TTP eine Diff-Datei erstellen kann muž eine ITG.BAK vorhanden sein. Damit CAT diese anlegt muž in der CATUSER.INF die folgenden Zeile NoInfofileBackups := TRUE; entfernt oder das TRUE durch FALSE ersetzt werden. Daž die BAK-Dateien nachher doch gel”scht werden, dafr sorgt dann LOESCHE.TTP. Zumindest die ITG.BAK muž gel”scht werden, sonst wird bei jedem Aufruf von ITG_DIFF.TTP eine Diff-Datei ber die 'alten' ITG-Dateien erstelt. So wie's bei mir installiert ist, wird jedesmal wenn die Maus eine neue ITG.TXT schickt und CAT darauf eine ITG.BAK anlegt eine Mail mit den Žnderungen in die Gruppe Chipmunk gepostet. Als Diff-Programm kann natrlich jedes andere Programm (TOS) benutzt werden. Dieses dient nur als Beispiel und ist speziell auf die ITG.TXT zugeschitten. Zus„tzlich liegt den Archiv noch ein OUTFILE.TXT bei, welches eine Gruppe einrichtet und nochmal einen kleine Erkl„rung zu den Diffs von ITG_DIFF.TTP enth„lt. Denen, die sich durch diese Anleitung gewhlt haben meinen herzlichen Glckwunsch. Falls es dennoch Fragen geben sollte bin ich in der Maus KR zu erreichen. (Henry Rolofs @ KR) Gruž, Henry PS: Nochmals, zur Zeit ist Chipmunk nur mit den CAT-Versionen 2.52 und 2.6 getestet worden.