    SENF - Der Mini-Environment-Setzer - Version vom 07.05.1995
    -----------------------------------------------------------


    Was'n das?
    ----------

    Wie oft liest man in Anleitungen Stze wie "... und wenn die 
    Environment-Variable BLABLA existiert..." oder "... wird zunchst in 
    $PATH gesucht..." und fragt sich dann "Was sind denn Environment-
    Variablen und wie erzeuge ich die?". Diesen Mistand soll SENF 
    beseitigen. (Der Name ist brigens von "Set Environment" abgeleitet, 
    und SETENV oder SENV war mir halt zu eintnig ;) Auerdem gibt SENF 
    ja sozusagen seinen Senf zum Environment dazu...)

    SENF gehrt in den AUTO-Ordner und bentigt das File SENF.INF im 
    Wurzelverzeichnis des Bootlaufwerks, aber dazu spter mehr.

    Man beachte brigens, da dieser Text fast 14 mal lnger als das 
    Programm selbst ist :-)


    Environment-Variablen?
    ----------------------

    Zunchst einmal eine kurze Erluterung, was Environment-Variablen 
    eigentlich sind (diejenigen, die das nicht interessiert, weil sie es 
    schon wissen, knnen gleich beim nchsten Abschnitt weiterlesen).

    "Environment" kommt aus dem Englischen und bedeutet soviel wie "Umwelt" 
    oder "Umgebung". Was eine Variable ist, sollte eigentlich jedem klar 
    sein, somit wissen wir also, da es sich um "Umgebungs-Variablen" 
    handelt. Damit ist sicherlich noch nichts erreicht, also weiter...

    Die Environment-Variablen enthalten globale Informationen fr die 
    laufenden Programme. Diese Informationen knnen sehr unterschiedlicher 
    Natur sein, sie mssen nur als ASCII-Text darstellbar sein. Jede dieser 
    Variablen erhlt einen Namen, der blicherweise komplett in 
    Grobuchstaben gehalten ist. Das komplette "Environment" bezeichnet die 
    Gesamtheit der existierenden Variablen und wird bei einem Programmstart 
    weitergegeben, wobei es vorher ggf. verndert werden kann. Diese 
    nderungen betreffen dann aber nur das gestartete Programm und dessen 
    "Kinder", die anderen Prozesse bekommen davon nichts mit!

    Der Sinn der Environment-Variablen ist es also, Informationen zur 
    Verfgung zu stellen, die fr alle Programme von Nutzen sein knnen. 
    Welche Informationen mgen das sein? Einige Beispiele:

    Unter GEM gibt es ja das sogenannte Clipboard, mit dem Programme 
    untereinander Daten austauschen knnen. Die Regelung, welches 
    Verzeichnis als Clipboard-Verzeichnis benutzt werden soll, ist relativ 
    starr. Daher untersttzen die meisten Programme die Environment-
    Variable CLIPBRD oder auch SCRAPDIR. In ihr wird dann der zu benutzende 
    Clipboard-Pfad angegeben. Da es zwei verschiedene Variablen mit der 
    gleichen Bedeutung sind, sollte man auch beide mit dem gleichen Inhalt 
    anlegen. Somit knnen die Programme anhand des Environments 
    feststellen, welchen Pfad sie zum Datenaustausch verwenden sollen.

    Ebenfalls sehr ntzlich ist die Variable PATH. Sie enthlt einen oder 
    mehrere Pfade (durch ; getrennt), in denen ausfhrbare Programme 
    enthalten sind. Die AES benutzen PATH auch, wenn sie (via shel_find) 
    Resource-Dateien suchen. Somit kann man alle Resource-Dateien in einem 
    Verzeichnis sammeln und gibt dieses in der Variablen PATH an. Ein 
    Kommandozeilen-Interpreter benutzt PATH, um auszufhrende 
    Programme/Kommandos zu suchen. In Anlehnung an UN*X wird dafr in 
    der Regel ein BIN-Verzeichnis benutzt, das dann also auch in PATH 
    angegeben wird.

    Environment-Variablen sind sehr einfach aufgebaut: Zuerst der 
    Variablenname, dann ein Gleichheitszeichen und danach der Inhalt. Im 
    Falle von PATH knnte das so aussehen:

    PATH=C:\RESOURCE;C:\BIN

    Das vorliegende Programm SENF macht nun nichts weiter, als das 
    Environment der System-Shell (normalerweise der Desktop) festzulegen, 
    da ATARI im Betriebssystem nur eine Minimallsung erstellt, die ohne 
    zustzliche Programme wie eben SENF nicht nderbar ist. Da, wie bereits 
    erwhnt, das Environment bei Programmstarts "vererbt" wird, steht der 
    per SENF installierte Variablen-Satz allen vom Desktop aus gestarteten 
    Programmen zur Verfgung. Wichtig: Vor TOS 1.4 bercksichtigen die AES 
    nur die ersten 50 Bytes des Environments (es wird allerdings trotzdem 
    das gesamte weitergegeben), deswegen sollte PATH (diese Variable wird 
    ja von den AES benutzt) bei diesen TOS-Versionen immer als erstes 
    definiert werden und nicht lnger als 50 Bytes sein (inklusive PATH=).

    Noch ein Hinweis: Da UN*X-Shells Eingaben wie $PATH automatisch durch 
    den Inhalt der Environment-Variablen PATH ersetzen (wenn sie 
    existiert), wird hufig nur von $XYZ geredet. Damit ist dann eine 
    Environment-Variable namens XYZ gemeint.


    Wie wird SENF bedient/konfiguriert?
    -----------------------------------

    Da SENF das Enviroment fr die System-Shell festlegt, mu es bereits im 
    AUTO-Ordner gestartet werden; die Position innerhalb des Ordners ist 
    dabei egal (manche Programme dieser Art mssen an der physikalisch 
    letzten Position stehen). Das zu installierende Environment entnimmt 
    SENF der Datei SENF.INF, die im Hauptverzeichnis des Bootlaufwerks oder 
    ebenfalls im AUTO-Ordner plaziert sein mu. Kann diese Datei nicht 
    gefunden werden, meckert SENF.

    Die Datei selbst enthlt Environment-Variablen-Definitionen in der 
    blichen Schreibweise, also z.B.:

    PATH=C:\RESOURCE;C:\BIN
    CLIPBRD=C:\CLIPBRD
    SCRAPDIR=C:\CLIPBRD
    usw.

    Eine mit % beginnende Zeile wird dabei als Kommentar berlesen. Ein % 
    innerhalb einer Definition wird durch das Bootlaufwerk ersetzt, aus

    CLIPBRD=%:\CLIPBRD

    wird demnach

    CLIPBRD=C:\CLIPBRD

    wenn man von Laufwerk C gebootet hat.

    SENF gibt aus, was als Environment gesetzt wird, also praktisch der 
    Inhalt von SENF.INF ohne Kommentare, bei dem alle Prozentzeichen 
    innerhalb von Definitionen durch das Bootlaufwerk ersetzt sind.

    Mchte man diese Ausgabe unterbinden, weil man z.B. sein PGP-Pawort 
    (unvernnftigerweise) in $PGPPASS ablegt und nicht will, da es beim 
    Booten angezeigt wird, kann in SENF.INF die Zeile %- anlegen. Damit 
    unterbleibt die Ausgabe der nachfolgenden Variablen, bis die Datei 
    fertig bearbeitet wurde oder man mit %+ wieder Ausgaben erlaubt hat.

    Die Datei SENF.INF darf Zeilenenden in TOS-Manier (CR+LF) oder UN*X-
    like (nur LF) haben. Alles andere fhrt zwangslufig zu Problemen. 
    Auerdem keine Leerzeilen einbauen! Wenn, dann eine Zeile, die nur ein 
    Prozentzeichen am Anfang hat, OK?

    Die mitgelieferte Datei SENF.INF soll als Beispiel dienen, das nach 
    eigenen Wnschen verndert und erweitert werden kann.


    Technisches
    -----------

    SENF verbiegt den Vektor exec_os (0x4fe) mit der XBRA-Kennung "SENF" 
    (wer htte das gedacht...) SENF ist selbstmurmelnd ein TSR-Programm, da 
    das gesetzte Environment ja nicht berschrieben werden darf.

    Bei einem PATH-Eintrag wird der Fehler des Betriebssystems nicht 
    hinzugefgt (Nullbyte nach Gleichheitszeichen), da ich es fr 
    sinnvoller halte, alle Environment-Variablen korrekt anzulegen. 
    Auerdem sollten Programme auch nur mit diesem Fehler zurechtkommen, 
    ihn aber nicht voraussetzen.


    Rechtliches
    -----------

    SENF ist frei kopier- und benutzbar, allerdings mssen die Dateien 
    SENF.PRG, SENF.TXT und SENF.INF komplett und unverndert (das gilt 
    insbesondere fr die Beispieldatei SENF.INF!) kopiert werden, wobei 
    Archivierung erlaubt ist.

    SENF darf ebenfalls zu eigenen Programmen beigelegt werden (egal ob 
    Free-, Share- oder Lhnware), solange es in einem eigenen Ordner liegt 
    und die obigen Weitergabebedingungen eingehalten werden. Auerdem mu 
    aus der Dokumentation des Programms eindeutig hervorgehen, da es sich 
    bei SENF um ein eigenstndiges Produkt handelt, das nur als Zugabe zu 
    verstehen ist, frei weitergegeben werden darf und von mir, Thomas 
    Binder, programmiert wurde. Ich fnde es brigens ganz nett, wenn ich 
    ber solche Beilagen informiert wrde, meine Adresse folgt unten.

    Die Benutzung von SENF erfolgt auf eigene Gefahr. Ich bernehme keine 
    Verantwortung fr Schden, die durch die sach- oder unsachgeme 
    Anwendung von SENF entstanden sind. Genauso kann ich nicht fr 
    Tauglichkeit von SENF fr einen anderen als dem hier beschriebenen 
    Zweck garantieren.


    Kontakt mit dem Autor
    ---------------------

    Wer Fehler findet, Verbesserungsvorschlge machen oder einfach nur mal 
    "ein Schwtzchen halten" will, kann sich an folgende Adresse(n) wenden:

    Thomas Binder
    Johann-Valentin-May-Strae 7
    64665 Alsbach-Hhnlein
    Deutschland

    InterNet: binder@rbg.informatik.th-darmstadt.de
    IRC: Gryf

    Wer unbedingt den Quellcode haben will, soll's sagen. Allerdings warne 
    ich gleich vor, denn er ist so schlecht kommentiert, da man auch 
    gleich das Disassembler-Listing nehmen kann...


    History
    -------

    nderungen gegenber V1.5:
    - 1.5 war die erste ffentliche Version, die Versionsnummer war 
      allerdings vllig aus der Luft gegriffen, deswegen habe ich jetzt 
      stattdessen das Datum angegeben.
    - SENF.INF darf jetzt auch im AUTO-Ordner liegen.
    - Es ist mglich, mit %- und %+ am Zeilenbeginn die Ausgabe der 
      Variablen zwischenzeitig aus- und wieder einzuschalten (zufrieden, 
      Gtz?) Defaultmig ist die Ausgabe an, mchte man also berhaupt 
      keine Ausgaben, mu die erste Zeile in SENF.INF %- lauten.


    So, das war's, viel Erfolg mit SENF!

