

           =============================================
            Dokumentation zum Programm list2  29-Jul-93
           =============================================
Version 1.1

1. Copyright:
=============

    (c) 1993 Bernd Preusing/AMSoft
             Gerhardstr. 16
             D-25335 Elmshorn
             email: bp@bpamsoft.sh.sub.org

    Dieses Programm ist NICHT Public Domain. Es darf jedoch frei
    kopiert und weitergegeben werden, solange die Dateien voll-
    ständig und unverändert bleiben.


2. Zweck des Programms:
=======================
Wer gezwungen ist, mit den Befehlen list und dir zu arbeiten,
wird meinen Ärger verstehen,
list sortiert nicht und berechnet die Blocksummen falsch und dir
zeigt keine weiteren Eigenschaften von Dateien an.
list2 behebt all diese Mängel und bietet mehr als dir und list
zusammen.


2.1 Wichtige Unterschiede zum list-Befehl:
------------------------------------------

- list2 kann sortieren :-)
- Alle Hard- und Softlinks werden korrekt angezeigt.
- Die Flags für Groups und Other sowie Owner- und UserID, die ab
  Kickstart V39 existieren, können angezeigt werden.
- Der Parameter KEYS wird nicht unterstützt.
- Bei Angabe von LFORMAT wird nicht automatisch NOHEAD gesetzt,
  damit es einfach ist, sich diverse Aliase für verschiedene
  Layouts zu erstellen.
- Die Blockzahlsummen werden korrekt berechnet.

Beispiele:

list2 lformat "Protect *"%f%s*" wd sub" to ram:tt nohead
execute ram:tt

alias ld list2 lformat "%a %8l %-9d %t %s%o%q" sort d
alias lt list since today
alias lw list wide unix


3. Programm-Eigenschaften:
=========================

- list2 benötigt mindestens die Kickstart Version 37.

- list2 ist reentrant, d.h., es kann mit dem Befehl resident
  permanent in den Speicher geladen werden.

- list2 benötigt bis zu 4000 Byte Stack. Es holt sich diesen
  Stapelspeicher selbständig, falls der eingestellte Stapel
  zu klein ist.

- list2 ist mit M2Amiga Modula-2 geschrieben. GURUs werden also
  abgefangen und statt dessen ein Requester angezeigt, der das
  Programm ordnungsgemäß beendet.


4. Programm-Parameter:
======================

Groß- und Kleinschreibung spielt bei den Parametern grundsätzlich
keine Rolle.

Beim Aufruf emit '?' wird das Template angezeigt. Wird dort erneut
ein '?' eingegeben, erscheint weitere Information.


4.1 Parameter für die Auswahl der Objekte:
------------------------------------------

DIR/M:
Es können beliebig viele Verzeichnisse oder Dateien angegeben
werden, die nacheinander erscheinen. Hier dürfen auch Wildcards
vorkommen, wie z.B. "#?/#?", das alle Verzeichnisse der Tiefe 1
auflistet.


PAT/K:
Hiermit kann ein Wildcard-Pattern angegeben werden, das die
Auswahl der angezeigten Dateien einschränkt.
Z.B. listet "list2 pat ~(#?[a-n]#?)" alle Dateien des aktuellen
Verzeichnisses auf, die keinen der Buchstaben a-n enthalten.


SUB/K:
Dieser Parameter ist für Tippfaule gedacht. Er entspricht PAT, es
werden lediglich davor und dahinter je ein "#?" eingefügt.
"SUB mod" entspricht also "PAT #?mod#?".
Werden PAT und SUB beide angegeben, gelten sie auch beide, was zu
einer UND-Verknüpfung führt.


SINCE/K und UPTO/K:
Diese Parameter schränken die Auswahl angezeigter Dateien weiter
ein. Es werden nur die Objekte aufgelistet, die vor oder nach
einem bestimmten Zeitpunkt zuletzt geändert oder angelegt wurden.

Bei diesen beiden Parametern kann entweder ein Datum im Format
tt-mmm-jj, ein Ersatz wie z.B. "today" (bzw. bei deutscher
Einstellung "heute") oder eine Uhrzeit im Format hh:mm oder
hh:mm:ss angegeben werden. SINCE today bedeutet ab heute 00:00
inklusive. UPTO 1-Aug-92 bedeutet bis 1.8.92 23:59:59 inklusive.
SINCE 8:00 bedeutet ab heute 8:00 inklusive.

ACHTUNG:
Man kann auch Wochentage angeben, wie z.B. SINCE monday, aber
leider führt dies bei mir zum Programm-Abbruch, weil noch ein
Fehler in einer der Libraries dos oder locale vorhanden ist
(ungütige Instruktion). Dies gilt übrigens auch für den normalen
list-Befehl! Ich fahre momentan Kickstart 40.3. Am besten einfach
einmal ausprobieren, es kann nichts passieren (siehe oben:
Weitere Eigenschaften)!


FILES/S:
Falls dieses Keyword angegeben wird, werden nur Dateien und keine
Verzeichnisse aufgelistet. Unidentifizierbare Softlinks zählen zu
den Dateien.


DIRS/S:
Falls dieses Keyword angegeben wird, werden nur Verzeichnisse und
keine Dateien aufgelistet.
Sind DIRS und FILES beide angegeben, werden wiederum alle Objekte
angezeigt.


ALL/S:
Durch diesen Schalter wird bewirkt, daß auch alle Unterverzeich-
nisse angezeigt werden. Außerdem wird dadurch am Schluß eine
TOTAL-Summe angezeigt.


LINKS/S:
Entspricht ALL, aber es werden auch die Verzeichnisse, die durch
ein Link erzeugt wurden, aufgelistet.


MULTI/S:
Verzeichnisse, die durch Assign-Pfade erzeugt wurden, werden
alle nacheinander aufgelistet.
Bei mir gibt es z.B. ein s:-Verzeichnis, das durch den Befehl
"assign s: b:sys/s sys:s" erzeugt wird. Ein 'normales' list2
zeigt nur die Dateien in b:sys/s, MULTI zeigt aber auch die in
sys:s.



4.2 Parameter für das Layout der Anzeige
----------------------------------------

Das Standard-Layout ohne Angabe weiterer Parameter entspricht dem
LFORMAT "%-24s %a %8l %-9d %t%o%q".
Beispiel:
m4.info                  ----rw-d      820 20-Feb-93 15:24:45
more                     --parwed    11284 22-Jun-90 17:13:45
neuhl3                   --parwed   HlFile 22-Jun-90 17:13:45 ->Work:more


WIDE/S:
Bei der Angabe von WIDE werden alle weiteren Formatangaben (ins-
besondere LFORMAT) bis auf NOHEAD ignoriert. Die Auflistung ähnelt
der des Befehls dir, ist also zweispaltig mit eingerückten
Directories zu Beginn.
Bei WIDE wird zuletzt immer nach 'i' sortiert! Dadurch erscheinen
die Directories stets zu Beginn.

Ist gleichzeitig die Option UNIX gesetzt, wird das Layout 4-spaltig.
Jede Spalte beginnt mit einem Leerzeichen und maximal 18 Zeichen des
Namens. Sollte der Name länger als 18 Zeichen sein, erscheint in der
Spalte 18 ein '+'. Dies ergibt eine maximale Breite von 76 Zeichen.
Zunächst kommen alle Verzeichnisse, dann die Dateien.
Die Sortierfolge ist dabei von oben nach unten, dann nach rechts.


QUICK/S:
Bei QUICK werden nur die Dateinamen aufgelistet. Es entspricht
"LFORMAT %s".


BLOCK/S:
Hierdurch werden statt der Dateigrößen in Bytes die Größen in
Blöcken (normalerweise 512 Bytes pro Block) angezeigt.
In LFORMAT " %6b" statt " %8l".


NODATES/S:
Dieser Schalter unterdrückt die Anzeige von Datei-Datum und
-Uhrzeit. " %-9d %t" entfällt beim LFORMAT.


NOPRO/S:
Hiermit wird die Anzeige der Datei-Flags unterdrückt. (%a)


NOSUBST/S:
Durch Angabe dieses Keywords wird bewirkt, daß bei der Anzeige
des Datums nicht "Today" o.ä. erscheint, sondern das ausführliche
Datum.


NOHEAD/S:
Unterdrückt die Anzeigen zu Beginn und amm Ende jedes
Verzeichnisses sowie die TOTAL-Summe am Schluß.


NONOTES/S:
Bewirkt die Unterdrückung der Anzeige von Datei-Kommentaren
(FileNote). "%q" entfällt im LFORMAT.


UNIX/S:
Dieser Schalter ist erst ab Kickstart Version 39 sinvoll. Er
bewirkt die Anzeige von Besitzer und Gruppe der Datei sowie
weiterer Datei-Flags.
Außerdem wird hierdurch ein unixähnliches Layout erzeugt:
LFORMAT: "%a%x %2u %2g %8l %-9d %t  %s%o%q", also Flags in der
Reihenfolge User, Group, Other, dann UserID und GroupID.

In Kombination mit der WIDE-Option bewirkt UNIX etwas anderes,
siehe unter WIDE!

Beispiel:
----rw-d====----  0  0      820 20-Feb-93 15:24:45  m4.info
--parwed====----  0  0    11284 22-Jun-90 17:13:45  more
--parwed====----  0  0   HlFile 22-Jun-90 17:13:45  neuhl3 ->Work:more


LFORMAT/K:
Hiermit kann man sich sein ganz persönliches Layout erstellen
oder auch Befehle in eine Stapeldatei schreiben.

ACHTUNG:
Bei LFORMAT wird nicht automatisch NOHEAD gesetzt, um die Alias-
Funktion der Shell ausnutzen zu können. Dies ist beim list-Befehl
anders!

In der Shell muß man für einen Zeilenvorschub "*N" angeben und
nicht, wie z.B. in C "\n" Um ein Anführungszeichen innerhalb
einer Zeichenkette zu erzeugen gibt man *" an.

Die Angaben in der Zeichenkette entsprechen in etwa der Funktion
RawDoFmt aus der exec.library. Alle durch LFORMAT ausgegebenen
Objekte sind Zeichenketten, Geschichten wie %ld sind hier also
nicht erlaubt.

Mit Hilfe von Feldlängen und des Minuszeichens kann man jedes
beliebige Layout erzeugen:

%s	gibt eine Zeichenkette aus. Sie verbraucht genausoviele
	Zeichen, wie die Zeichenkette lang ist.
%20s	gibt die Zeichenkette in einem 20 Zeichen langen Feld
	rechtsbündig aus. Ist die Zeichenkette länger als 20
	Zeichen, wird auch das Ausgabefeld velängert.
%20.20s	entspricht %20s, aber wenn sie länger ist als 20 Zeichen
	ist, wird sie abgeschnitten.
%-20s	wie %20s, aber linksbündig.
%-20.10s gibt maximal 10 Zeichen des Strings linksbündig in einem
	20 Zeichen breiten Feld aus.

Mögliche Buchstaben für LFORMAT:

%s Dateiname (=%n)
%n Dateiname (=%s)
%m Dateiname ohne letzte Extension (ohne den Punkt)
%e Datei-Extension ohne den Punkt

%p Relativer Pfad der Datei mit abschließendem "/" oder ":"
%f Vollständiger Pfad der Datei mit abschließendem "/" oder ":"

%a Die Standard Protection Flags, 8 Zeichen hsparwed
   (rwed entspricht somit den "User"-Flags)
%x "Group"- und "Other"- Flags. 8 Zeichen (ab V39) RWEDRWED,
   wenn gesetzt, sonst ====----.

%l Größe der Objektes in Bytes  oder "Dir" usw.
%b Größe des Objektes in Blocks oder "Dir" usw. Max. 8 Zeichen

%o Datei oder Verzeichnis, auf die der Link verweist
   Beginnt imer mit " ->", wenn nicht leer.

%c Kommentar der Datei (FileNote)
%q Kommentar der Datei (FileNote) mit vorangehendem Linefeed und
   " : " Wenn der Kommentar leer ist, wird alles unterdrückt.

%d Datei-Datum im AmigaDos-Format. Max 9 Zeichen
%t Datei-Zeit, immer 10-stellig

%g Gruppennummer (erst ab Kickstart V39 sinnvoll)
%u User(Owner)nummer (erst ab Kickstart V39 sinnvoll)
   Beide Nummern sind später durch Namen zu ersetzen, sobald der
   Amiga wirklich multiuserfähig wird.



4.3 Sonsige Parameter
---------------------

SORT/K und DESC/S:
Hiermit kann die Sortierung dewr Dateien bestimmt werden. Der
Parameter kann bis zu 32 Zeichen lang sein. Jeder Buchstabe
fordert eine Sortierung. Die Zeichen werden von links nach rechts
abgearbeitet und jeweils sortiert.

Der Sortier-Algorithmus ist stabil, d.h. wenn zunächst nach Namen
und dann nach Typen sortiert wird, bleibt bei gleichem Typ die
alphabetische Reihenfolge erhalten.

Die Angabe nif besagt also: sortiere zunächst nach n, dann nach
i und zum Schluß nach f. Daraus folgt, daß die Hauptsortierung
nach f, darin nach i und darin wiederum nach n erfolgt.

Der Schalter DESC dreht die Sortierfolge um. Wenn z.B. nach Größe
sortiert wird, steht die größte Datei zu Beginn.
DESC hat KEINE Auswirkung auf die Folge t und i!

Die Standard-Sortierung von List2 ist "NI", dh., es erscheinen
zunächst alle Verzeichnisse alphabetisch sortiert und dann die
Dateien alphabetisch sortiert.

Buchstaben, die nicht in der Liste auftauchen, bewirken nichts.
Durch einen ungültigen Buchstaben, wird aber die Standard-
Sortierung überschrieben.
SORT x bewirkt also, daß die Dateien in ihrer "natürlichen"
Reihenfolge aufgelistet werden.

"SORT n"  sortiert alphabetisch ohne Berücksichtigung des Typs.
"SORT ts" ist auch ganz hübsch.

Mögliche Sortierungen:

t: Sortierung nach Dateityp
   Die Objekte werden in folgender Reihenfolge sortiert:
	HlDir	(HardLink auf ein Verzeichnis)
	SlDir	(SoftLink auf ein Verzeichnis)
	Dir	(normales Verzeichnis)
	Datei	(normale Datei)
	HlFile	(HardLink auf eine Datei)
	SlFile	(SoftLink auf eine Datei)
	<????>	(unbekannt, wahrscheinlich ein Link auf ein
		 nicht (mehr) existierendes Objekt)

i: Sortierung nach Dateityp
   Die Objekte werden in folgender Reihenfolge sortiert:
	Verzeichnisse
	Dateien (<????> gehört hierzu)

s: Sortierung nach Größe
   Verzeichnisse erscheinen hierbei immer zu Beginn, da sie die
   Größe 0 haben.

n: Sortierung nach Namen
   Hierbei gilt die ANSI-Reihenfolge

d: Sortierung nach Datum und Uhrzeit der letzten Änderung

f: Sortierung nach Dateiflags
   Der Vergleich erfolgt einfach numerisch als 32bit mit den
   niedrigsten 4 Bits invertiert.

e: Sortierung nach Datei-Erweiterung (Extension)


TO/K:
Dieser Parameter ist relativ überflüssig. er bewirkt die
Umleitung der Ausgabe in eine Datei. Dies ist natürlich identisch
mit einer normalen Ausgabe-Umleitung mittels ">file".



5. Bekannte Bugs und weitere Planung:
=====================================
- list2 since monday ist nicht möglich (dos-Bug!)
- Anpassung der Konstanten für die locale.library


6. History:
===========

V1.0 (08 Jul 1993)
	Erste öffentliche Version

V1.1 (29 Jul 1993)
	- Doku überarbeitet.
	- Neue Sortierungen F und E
	- Fehler bei der Anzeige von SoftLinks korrigiert
	  (Autodocs für ReadLink() sind nicht genau genug!)
	- Unterstützt nun Extended Help, d.h., bei einem zweiten
	  Fragezeichen wird mehr Info angezeigt.
	- Neue Darstellung 4-spaltig bei Option WIDE UNIX.
	- Bei WIDE nun immer Sortierung 'I' am Schluß.

Für Kritik, Bugreports und weitere Anregungen bin ich jederzeit
dankbar.

-The END -
