snoop(): lokale Variablen umbenannt.

Statt snooper0, snooper2, snooper3 etc. werden jetzt
hoffentlich sprechendere Namen verwendet, damit man
ne Chance hat, dahinter zu steigen, was passiert...

Change-Id: Ia4451c9f46b10b8700bdf10593b4219e1a68155d
diff --git a/secure/simul_efun/spare/simul_efun.c b/secure/simul_efun/spare/simul_efun.c
index b9a633a..f9dc05e 100644
--- a/secure/simul_efun/spare/simul_efun.c
+++ b/secure/simul_efun/spare/simul_efun.c
@@ -198,97 +198,112 @@
 nomask varargs int snoop( object snooper, object snoopee )
 {
     int ret;
-    object snooper1, snooper2, snooper3;
 
     if( !objectp(snooper) || snooper == snoopee || !PO )
        return 0;
 
     // Evtl. gibt es bereits einen snoopee, der von snopper gesnoopt wird?
-    object orig_snoopee = efun::interactive_info(snooper, II_SNOOP_PREV);
+    object existing_snoopee = efun::interactive_info(snooper, II_SNOOP_PREV);
 
+     // soll jemand neues gesnoopt werden?
      if(snoopee)
      {
+        // Jemand mit niedrigerem Level kann keinen hoeherleveligen snoopen
+        // lassen.
         if ( PO != snooper
              && query_wiz_grp(snooper) >= query_wiz_grp(geteuid(PO)) )
             return 0;
 
-        if ( query_wiz_grp(snooper) <= query_wiz_grp(snoopee) &&
-             !(snoopee->QueryAllowSnoop(snooper)) )
+        // Niedriglevelige User koennen nur mit Einverstaendnis hoeherlevelige
+        // snoopen.
+        if ( query_wiz_grp(snooper) <= query_wiz_grp(snoopee)
+             && !(snoopee->QueryAllowSnoop(snooper)) )
         {
+            // es sei denn der snooper ist Sheriff und der snoopee ist kein
+            // EM+
             if ( !IS_DEPUTY(snooper) || IS_ARCH(snoopee) )
                return 0;
         }
-
-        if ( (snooper1 = efun::interactive_info(snoopee, II_SNOOP_NEXT)) &&
-             query_wiz_grp(snooper1) >= query_wiz_grp(snooper) )
+        // Wird der snoopee bereits gesnoopt? Dann darf sich der neue snooper
+        // nur unter Umstaenden in die Snoop-Kette einreihen...
+        object existing_snooper;
+        if ( (existing_snooper = efun::interactive_info(snoopee, II_SNOOP_NEXT))
+             && query_wiz_grp(existing_snooper) >= query_wiz_grp(snooper) )
         {
-            if ( snooper1->QueryProp(P_SNOOPFLAGS) & SF_LOCKED )
+            // ... naemlich nur dann, wenn der bestehende Snooper kein
+            // SF_LOCKED gesetzt hat.
+            if ( existing_snooper->QueryProp(P_SNOOPFLAGS) & SF_LOCKED )
                return 0;
 
-            tell_object( snooper1, sprintf( "%s snooped jetzt %s.\n",
+            tell_object( existing_snooper, sprintf( "%s snooped jetzt %s.\n",
                                        snooper->name(WER), snoopee->name(WER) ) );
 
-            snooper2 = snooper;
-
-            while ( snooper3 = interactive_info(snooper2, II_SNOOP_NEXT) )
+            // Evtl. wird der neue snooper selber gesnoopt. Dafuer wird jetzt
+            // ggf. die Kette von *ihren* snoopern verfolgt.
+            object snooper_of_new_snooper = snooper;
+            object snooper_rover;
+            while ( snooper_rover = interactive_info(snooper_of_new_snooper, II_SNOOP_NEXT) )
             {
-               tell_object( snooper1,
+               tell_object( existing_snooper,
                            sprintf( "%s wird seinerseits von %s gesnooped.\n"
-                                   ,snooper2->name(WER),
-                                   snooper3->name(WEM) ) );
-               snooper2 = snooper3;
+                                   ,snooper_of_new_snooper->name(WER),
+                                   snooper_rover->name(WEM) ) );
+               snooper_of_new_snooper = snooper_rover;
             }
 
-            efun::snoop( snooper1, snooper2 );
+            // Der letzt snooper des hier anzumeldenden snoopers wird nun vom
+            // bestehenden snooper gesnoopt, falls moeglich.
+            efun::snoop( existing_snooper, snooper_of_new_snooper );
 
-            if ( efun::interactive_info(snooper2, II_SNOOP_NEXT) != snooper1 )
-               tell_object( snooper1, sprintf( "Du kannst %s nicht snoopen.\n",
-                                          snooper2->name(WEN) ) );
+            if ( efun::interactive_info(snooper_of_new_snooper, II_SNOOP_NEXT)
+                   != existing_snooper )
+               tell_object( existing_snooper, sprintf( "Du kannst %s nicht snoopen.\n",
+                                          snooper_of_new_snooper->name(WEN) ) );
             else
             {
-               tell_object( snooper1, sprintf( "Du snoopst jetzt %s.\n",
-                                          snooper2->name(WEN) ) );
-               if ( !IS_DEPUTY(snooper1) )
+               tell_object( existing_snooper, sprintf( "Du snoopst jetzt %s.\n",
+                                          snooper_of_new_snooper->name(WEN) ) );
+               if ( !IS_DEPUTY(existing_snooper) )
                {
                    log_file( SNOOPLOGFILE, sprintf("%s: %O %O %O\n",
                                                dtime(time()),
-                                               snooper1,
-                                               snooper2,
-                                               environment(snooper2) ),
+                                               existing_snooper,
+                                               snooper_of_new_snooper,
+                                               environment(snooper_of_new_snooper) ),
                             100000 );
-                   if (orig_snoopee)
-                      CHMASTER->send( "Snoop", snooper1,
+                   if (existing_snoopee)
+                      CHMASTER->send( "Snoop", existing_snooper,
                                     sprintf( "%s *OFF* %s (%O)",
-                                            capitalize(getuid(snooper1)),
-                                            capitalize(getuid(orig_snoopee)),
-                                            environment(orig_snoopee) ) );
+                                            capitalize(getuid(existing_snooper)),
+                                            capitalize(getuid(existing_snoopee)),
+                                            environment(existing_snoopee) ) );
 
-                   CHMASTER->send( "Snoop", snooper1,
+                   CHMASTER->send( "Snoop", existing_snooper,
                                  sprintf("%s -> %s (%O)",
-                                        capitalize(getuid(snooper1)),
-                                        capitalize(getuid(snooper2)),
-                                        environment(snooper2)));
+                                        capitalize(getuid(existing_snooper)),
+                                        capitalize(getuid(snooper_of_new_snooper)),
+                                        environment(snooper_of_new_snooper)));
                }
                else
                {
                    log_file( ASNOOPLOGFILE, sprintf( "%s: %O %O %O\n",
                                                  dtime(time()),
-                                                 snooper1,
-                                                 snooper2,
-                                                 environment(snooper2) )
+                                                 existing_snooper,
+                                                 snooper_of_new_snooper,
+                                                 environment(snooper_of_new_snooper) )
                             ,100000 );
                }
             }
         }
         else
         {
-            if (snooper1)
+            if (existing_snooper)
             {
                if ( !snooper->QueryProp(P_SNOOPFLAGS) & SF_LOCKED )
                {
                    printf( "%s wird bereits von %s gesnooped. Benutze das "
                           "\"f\"-Flag, wenn du dennoch snoopen willst.\n",
-                          snoopee->name(WER), snooper1->name(WEM) );
+                          snoopee->name(WER), existing_snooper->name(WEM) );
                    return 0;
                }
             }
@@ -303,13 +318,13 @@
                                          snooper, snoopee, environment(snoopee) ),
                      100000 );
 
-            if (orig_snoopee)
+            if (existing_snoopee)
             {
                CHMASTER->send( "Snoop", snooper,
                              sprintf( "%s *OFF* %s (%O).",
                                      capitalize(getuid(snooper)),
-                                     capitalize(getuid(orig_snoopee)),
-                                     environment(orig_snoopee) ) );
+                                     capitalize(getuid(existing_snoopee)),
+                                     environment(existing_snoopee) ) );
             }
 
             CHMASTER->send( "Snoop", snooper, sprintf( "%s -> %s (%O).",
@@ -334,33 +349,38 @@
 
         return ret;
      }
+     // Ansonsten soll ein bestehender snoop beendet werden.
      else
      {
+        // Das beenden duerfen aber nur Aufrufer selber oder hoeherlevelige
+        // ausloesen oder gleichen levels, wenn sie selber gerade vom snooper
+        // gesnoopt werden.
         if ( (snooper == PO ||
               query_wiz_grp(geteuid(PO)) > query_wiz_grp(snooper) ||
               (query_wiz_grp(geteuid(PO)) == query_wiz_grp(snooper) &&
-              efun::interactive_info(PO, II_SNOOP_NEXT) == snooper)) && orig_snoopee )
+              efun::interactive_info(PO, II_SNOOP_NEXT) == snooper) )
+            && existing_snoopee )
         {
             if ( !IS_DEPUTY(snooper) )
             {
                log_file( SNOOPLOGFILE, sprintf( "%s: %O %O %O *OFF*\n",
                                             Lcut(dtime(time())), snooper,
-                                            orig_snoopee,
-                                            environment(orig_snoopee) ),
+                                            existing_snoopee,
+                                            environment(existing_snoopee) ),
                         100000 );
 
                 CHMASTER->send( "Snoop", snooper,
                               sprintf( "%s *OFF* %s (%O).",
                                       capitalize(getuid(snooper)),
-                                      capitalize(getuid(orig_snoopee)),
-                                      environment(orig_snoopee) ) );
+                                      capitalize(getuid(existing_snoopee)),
+                                      environment(existing_snoopee) ) );
             }
             else
             {
                log_file( ASNOOPLOGFILE, sprintf( "%s: %O %O %O *OFF*\n",
                                              Lcut(dtime(time())), snooper,
-                                             orig_snoopee,
-                                             environment(orig_snoopee) ),
+                                             existing_snoopee,
+                                             environment(existing_snoopee) ),
                         100000 );
             }
             return efun::snoop(snooper);