lilalo

diff l3-agent @ 80:d28dda8ea18f

1)
Изменён формат имени diff-файлов.
Теперь в имени присутствует только название сессии, время и имя файла.

2)
Можно просмотреть отдельную сессию.
Для этого нужно щёлкнуть по блоку сессии в журнале

3)
Исправлена ошибка с таблицей новых команд в последнем дне.
Раньше она просто не показывалась

4)
Запись lablog-ов теперь ведётся только для интерактивных shell'ов
Неинтерактивные работают как обычно.
author devi
date Mon Feb 20 17:52:40 2006 +0200 (2006-02-20)
parents a10db759e587
children d9a700d48bef
line diff
     1.1 --- a/l3-agent	Thu Feb 09 18:47:04 2006 +0200
     1.2 +++ b/l3-agent	Mon Feb 20 17:52:40 2006 +0200
     1.3 @@ -58,36 +58,36 @@
     1.4          for my $file (@files) {
     1.5  
     1.6              next if defined($Diffs{$file});
     1.7 -            
     1.8              my %diff;
     1.9 -            
    1.10 -            $diff{"path"}=$path;
    1.11 -            $diff{"uid"}="SET THIS";
    1.12  
    1.13 -# Сейчас UID определяется из названия каталога
    1.14 -# откуда берутся diff-файлы
    1.15 -# Это неправильно
    1.16 -#
    1.17 -# ВАРИАНТ:
    1.18 -# К файлам жураналам должны прилагаться ситемны файлы, 
    1.19 -# мз которых и будет определяться соответствие 
    1.20 -# имён пользователей их uid'ам
    1.21 -#
    1.22 -            $diff{"uid"} = 0 if $path =~ m@/root/@; 
    1.23 -            
    1.24 -            $diff{"bind_to"}="";
    1.25 -            $diff{"time_range"}=-1;
    1.26 -        
    1.27 -            next if not $file=~m@/(D?[0-9][0-9]?[0-9]?)[^/]*?([0-9]*):([0-9]*):?([0-9]*)@;
    1.28 -            $diff{"day"}=$1 || "";
    1.29 -            $diff{"hour"}=$2;
    1.30 -            $diff{"min"}=$3;
    1.31 -            $diff{"sec"}=$4 || 0;
    1.32 -            
    1.33 -            $diff{"index"}=$i;
    1.34 +# Старый формат имени diff-файла
    1.35 +# DEPRECATED
    1.36 +            if ($file=~m@/(D?[0-9][0-9]?[0-9]?)[^/]*?([0-9]*):([0-9]*):?([0-9]*)@) {
    1.37 +                $diff{"day"}=$1 || "";
    1.38 +                $diff{"hour"}=$2;
    1.39 +                $diff{"min"}=$3;
    1.40 +                $diff{"sec"}=$4 || 0;
    1.41 +
    1.42 +                $diff{"uid"} = 0 if $path =~ m@/root/@; 
    1.43  
    1.44              print "diff loaded: $diff{day} $diff{hour}:$diff{min}:$diff{sec}\n";
    1.45 -            
    1.46 +
    1.47 +            }
    1.48 +# Новый формат имени diff-файла
    1.49 +            elsif ($file =~ m@.*/([^_]*)_([0-9]+)(.*)@) {
    1.50 +                $diff{"local_session_id"} = $1;
    1.51 +                $diff{"time"} = $2;
    1.52 +                $diff{"filename"} = $3;
    1.53 +                $diff{"filename"} =~ s@_@/@g;
    1.54 +                $diff{"filename"} =~ s@//@_@g;
    1.55 +
    1.56 +                print "diff loaded: $diff{filename} (time=$diff{time},session=$diff{local_session_id})\n";
    1.57 +            }
    1.58 +            else {
    1.59 +                next;
    1.60 +            }
    1.61 +
    1.62 +# Чтение и изменение кодировки содержимого diff-файла
    1.63              local $/;
    1.64              open (F, "$file")
    1.65                  or return "Can't open file $file ($_[0]) for reading";
    1.66 @@ -98,9 +98,12 @@
    1.67              }
    1.68              close(F);   
    1.69              $diff{"text"}=$text;
    1.70 -            #print "$file loaded ($diff{day})\n";
    1.71  
    1.72 -            #push @Diffs, \%diff;
    1.73 +            $diff{"path"}=$path;
    1.74 +            $diff{"bind_to"}="";
    1.75 +            $diff{"time_range"}=-1;
    1.76 +            $diff{"index"}=$i;
    1.77 +
    1.78              $Diffs{$file} = \%diff;
    1.79              $i++;
    1.80          }
    1.81 @@ -110,11 +113,6 @@
    1.82  
    1.83  sub bind_diff
    1.84  {
    1.85 -#   my $path = shift;
    1.86 -#   my $pid = shift;
    1.87 -#   my $day = shift;
    1.88 -#   my $lab = shift;
    1.89 -
    1.90      print "Trying to bind diff...\n";
    1.91  
    1.92      my $cl = shift;
    1.93 @@ -126,12 +124,24 @@
    1.94  
    1.95      for my $diff_key (keys %Diffs) {
    1.96              my $diff = $Diffs{$diff_key};
    1.97 -            # Check here date, time and user
    1.98 +            next if ($diff->{"local_session_id"} 
    1.99 +                    && $cl->{"local_session_id"} 
   1.100 +                    && ($cl->{"local_session_id"} ne $diff->{"local_session_id"}));
   1.101 +            print "diff of my session found\n";
   1.102 +
   1.103              next if ($diff->{"day"} && $cl->{"day"} && ($cl->{"day"} ne $diff->{"day"}));
   1.104 -            #next if (!$diff->{"uid"} && $cl->{"euid"} != $diff->{"uid"});
   1.105 -            
   1.106 -            my $dt=($diff->{"hour"}-$hour)*3600 +($diff->{"min"}-$min)*60 + ($diff->{"sec"}-$sec);
   1.107 -            if ($dt >0  && $dt < $min_dt && ($diff->{"time_range"} <0 || $dt < $diff->{"time_range"})) {
   1.108 +
   1.109 +            my $dt;
   1.110 +            if ($diff->{"time"} && $cl->{"time"}) {
   1.111 +                $dt = $diff->{"time"} - $cl->{"time"}
   1.112 +            }
   1.113 +            else {
   1.114 +                $dt=($diff->{"hour"}-$hour)*3600 +($diff->{"min"}-$min)*60 + ($diff->{"sec"}-$sec);
   1.115 +            }
   1.116 +            if ($dt >0  
   1.117 +                    && $dt < $min_dt 
   1.118 +                    && ($diff->{"time_range"} <0 
   1.119 +                    || $dt < $diff->{"time_range"})) {
   1.120                  print "Approppriate diff found: dt=$dt\n";
   1.121                  if ($diff->{"bind_to"}) {
   1.122                      undef $diff->{"bind_to"}->{"diff"};
   1.123 @@ -141,7 +151,7 @@
   1.124  
   1.125                  $cl->{"diff"} = $diff_key;
   1.126                  $min_dt = $dt;  
   1.127 -        }
   1.128 +            }
   1.129      }
   1.130  }
   1.131  
   1.132 @@ -281,7 +291,7 @@
   1.133  
   1.134          $file =~ m@.*/(.*?)-.*@;
   1.135  
   1.136 -        print "+- processing file $file\n" if $Config{"verbose"} =~/y/;
   1.137 +        print "\n+- processing file $file\n" if $Config{"verbose"} =~/y/;
   1.138  
   1.139          my $tty = $1;
   1.140          my $first_pass = 1;