Kommentierung

Change-Id: I203409f9340764924ca42653ac255c137ded0c34
diff --git a/std/shells/magier/fileview.c b/std/shells/magier/fileview.c
index 596e1b6..68bf49a 100644
--- a/std/shells/magier/fileview.c
+++ b/std/shells/magier/fileview.c
@@ -423,6 +423,12 @@
 
   input = explode(args[0], "/");
 
+  /* Wenn das Ergebnis einer vorherigen Suche noch vorliegt und die aktuelle
+     Eingabe als einziges eine einstellige Zahl enthaelt, und diese dann in
+     dem alten Suchergebnis enthalten ist, wird die Eingabe durch das alte
+     Ergebnis ersetzt. <i> wird in dem Fall geloescht.
+     Wenn kein altes Ergebnis gefunden wurde, enthaelt <i> die eingegebene
+     Nummer. */
   if (oldman_result && sizeof(input)==1 && sizeof(args)==1 &&
       sizeof(input[0])==1 && (i=to_int(input[0])) &&
       member(oldman_result,i))
@@ -430,6 +436,8 @@
     input = ({oldman_result[i,0], oldman_result[i,1]});
     i = 0;
   }
+  /* Ansonsten wenn weder -m, noch -r gesetzt sind und es eine Manpage gibt,
+     die genau der Eingabe entspricht, wird diese verwendet. */
   else if (!(flags&(MAN_M|MAN_R)) && sizeof(input)>1)
   {
     if (file_size(MAND_DOCDIR+args[0]) >= 0)
@@ -439,6 +447,8 @@
   }
   else
   {
+    /* Soll eine Regexp-Suche durchgefuehrt werden? Dann erstmal den Ausdruck
+       auf Gueltigkeit pruefen. */
     if (flags&MAN_R)
     {
       flags &= (~MAN_M);
@@ -448,6 +458,10 @@
         return 1;
       }
     }
+    /* Die Ausgabe von locate() liefert ein String-Array, das abwechselnd den
+       Dateinamen der gefundenen Manpage und den vollen Pfad dieser Manpage
+       unterhalb von /doc enthaelt. Beispielsweise ({"Defend","lfun/Defend"})
+     */
     input = ({string *})MAND->locate(args[0], flags&(MAN_M|MAN_R));
     // Sortierung case-insensitive, ggf. vorhandene Pfade dabei ignorieren
     // Wird fuer die spaetere Ausgabe der Liste benoetigt.
@@ -459,17 +473,31 @@
             });
   }
 
+  /* Alte Such-Treffer werden entsorgt. */
   oldman_result = 0;
 
+  /* <i> kann maximal eine einstellige Zahl sein, 1-9, wenn eine solche als
+     einziges Argument eingegeben wurde und kein passendes Ergebnis in einer
+     vorigen Suchanfrage gefunden wurde.
+
+     <input> kann nur genau dann mehr als 2 Elemente haben, wenn das Ergebnis
+     des Aufrufs MAND->locate() drinsteht. Und nur dann muss ueberhaupt ein
+     hoeheres Wertepaar rausgeschnitten werden, denn wenn <input> bis zu 2
+     Elemente hat, kann damit direkt weitergearbeitet werden.
+
+     Beispiel: bei einer Eingabe von "4" wird hier aus <input> das 7. und
+     8. Element entnommen (Indizes [6..7]). */
   if(i && sizeof(input)>2 && sizeof(input) >= i*2)
     input = input[(i*2-2)..(i*2-1)];
 
   switch (sizeof(input))
   {
+    /* <input> leer, nichts brauchbares gefunden. */
     case 0:
       printf("Keine Hilfeseite gefunden fuer '%s'.\n", args[0]);
       break;
 
+    /* Genau 2 Elemente enthalten? Dann kann das direkt ausgegeben werden. */
     case 2:
        /*
          if (flags&MAN_I)
@@ -481,10 +509,15 @@
       printf("Folgende Hilfeseite wurde gefunden: %s\n", input[1]);
       More(MAND_DOCDIR+input[1], 1);
       return 1;
+
+    /* Alles andere: */
     default:
       i = sizeof(input)/2;
       string* output = allocate(i);
+
+      // Inhalt: ([ int nummer : string manpage; string manpage_pfad ])
       oldman_result = m_allocate(i, 2);
+
       while (i)
       {
         output[i-1] = input[i*2-2];