find_snoopee() entfernt.
Funktion kann einfacher ohne Schleife ueber alle
user durch Abfrage mit interactive_info implementiert
werden.
Change-Id: I4906692792e85d0c0d0f415ea733acc90582aa74
diff --git a/secure/simul_efun/spare/simul_efun.c b/secure/simul_efun/spare/simul_efun.c
index 6620847..b9a633a 100644
--- a/secure/simul_efun/spare/simul_efun.c
+++ b/secure/simul_efun/spare/simul_efun.c
@@ -191,18 +191,6 @@
// * Snoopen und was dazugehoert
-// Findet zu einem gegegeben eingeloggten, interaktivem User <who> den von ihr
-// gesnoopten Interactive.
-private object find_snoopee(object who)
-{
- foreach (object u: users())
- {
- if (who == efun::interactive_info(u, II_SNOOP_NEXT))
- return u;
- }
- return 0;
-}
-
private string Lcut(string str) {
return str[5..11]+str[18..];
}
@@ -210,12 +198,13 @@
nomask varargs int snoop( object snooper, object snoopee )
{
int ret;
- object snooper0, snooper1, snooper2, snooper3;
+ object snooper1, snooper2, snooper3;
if( !objectp(snooper) || snooper == snoopee || !PO )
return 0;
- snooper0 = find_snoopee(snooper);
+ // Evtl. gibt es bereits einen snoopee, der von snopper gesnoopt wird?
+ object orig_snoopee = efun::interactive_info(snooper, II_SNOOP_PREV);
if(snoopee)
{
@@ -267,12 +256,12 @@
snooper2,
environment(snooper2) ),
100000 );
- if (snooper0)
+ if (orig_snoopee)
CHMASTER->send( "Snoop", snooper1,
sprintf( "%s *OFF* %s (%O)",
capitalize(getuid(snooper1)),
- capitalize(getuid(snooper0)),
- environment(snooper0) ) );
+ capitalize(getuid(orig_snoopee)),
+ environment(orig_snoopee) ) );
CHMASTER->send( "Snoop", snooper1,
sprintf("%s -> %s (%O)",
@@ -314,13 +303,13 @@
snooper, snoopee, environment(snoopee) ),
100000 );
- if (snooper0)
+ if (orig_snoopee)
{
CHMASTER->send( "Snoop", snooper,
sprintf( "%s *OFF* %s (%O).",
capitalize(getuid(snooper)),
- capitalize(getuid(snooper0)),
- environment(snooper0) ) );
+ capitalize(getuid(orig_snoopee)),
+ environment(orig_snoopee) ) );
}
CHMASTER->send( "Snoop", snooper, sprintf( "%s -> %s (%O).",
@@ -350,28 +339,28 @@
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)) && snooper0 )
+ efun::interactive_info(PO, II_SNOOP_NEXT) == snooper)) && orig_snoopee )
{
if ( !IS_DEPUTY(snooper) )
{
log_file( SNOOPLOGFILE, sprintf( "%s: %O %O %O *OFF*\n",
Lcut(dtime(time())), snooper,
- snooper0,
- environment(snooper0) ),
+ orig_snoopee,
+ environment(orig_snoopee) ),
100000 );
CHMASTER->send( "Snoop", snooper,
sprintf( "%s *OFF* %s (%O).",
capitalize(getuid(snooper)),
- capitalize(getuid(snooper0)),
- environment(snooper0) ) );
+ capitalize(getuid(orig_snoopee)),
+ environment(orig_snoopee) ) );
}
else
{
log_file( ASNOOPLOGFILE, sprintf( "%s: %O %O %O *OFF*\n",
Lcut(dtime(time())), snooper,
- snooper0,
- environment(snooper0) ),
+ orig_snoopee,
+ environment(orig_snoopee) ),
100000 );
}
return efun::snoop(snooper);