# HG changeset patch
# User devi
# Date 1140450760 -7200
# Node ID d28dda8ea18faa7b2d0f9e400b0af223f1a003a4
# Parent 44973d76ba4d1937f6c8b581f310fd409f2f0d2e
1)
Изменён формат имени diff-файлов.
Теперь в имени присутствует только название сессии, время и имя файла.
2)
Можно просмотреть отдельную сессию.
Для этого нужно щёлкнуть по блоку сессии в журнале
3)
Исправлена ошибка с таблицей новых команд в последнем дне.
Раньше она просто не показывалась
4)
Запись lablog-ов теперь ведётся только для интерактивных shell'ов
Неинтерактивные работают как обычно.
diff -r 44973d76ba4d -r d28dda8ea18f l3-agent
--- a/l3-agent Sun Feb 19 16:02:42 2006 +0200
+++ b/l3-agent Mon Feb 20 17:52:40 2006 +0200
@@ -58,36 +58,36 @@
for my $file (@files) {
next if defined($Diffs{$file});
-
my %diff;
-
- $diff{"path"}=$path;
- $diff{"uid"}="SET THIS";
-# Сейчас UID определяется из названия каталога
-# откуда берутся diff-файлы
-# Это неправильно
-#
-# ВАРИАНТ:
-# К файлам жураналам должны прилагаться ситемны файлы,
-# мз которых и будет определяться соответствие
-# имён пользователей их uid'ам
-#
- $diff{"uid"} = 0 if $path =~ m@/root/@;
-
- $diff{"bind_to"}="";
- $diff{"time_range"}=-1;
-
- next if not $file=~m@/(D?[0-9][0-9]?[0-9]?)[^/]*?([0-9]*):([0-9]*):?([0-9]*)@;
- $diff{"day"}=$1 || "";
- $diff{"hour"}=$2;
- $diff{"min"}=$3;
- $diff{"sec"}=$4 || 0;
-
- $diff{"index"}=$i;
+# Старый формат имени diff-файла
+# DEPRECATED
+ if ($file=~m@/(D?[0-9][0-9]?[0-9]?)[^/]*?([0-9]*):([0-9]*):?([0-9]*)@) {
+ $diff{"day"}=$1 || "";
+ $diff{"hour"}=$2;
+ $diff{"min"}=$3;
+ $diff{"sec"}=$4 || 0;
+
+ $diff{"uid"} = 0 if $path =~ m@/root/@;
print "diff loaded: $diff{day} $diff{hour}:$diff{min}:$diff{sec}\n";
-
+
+ }
+# Новый формат имени diff-файла
+ elsif ($file =~ m@.*/([^_]*)_([0-9]+)(.*)@) {
+ $diff{"local_session_id"} = $1;
+ $diff{"time"} = $2;
+ $diff{"filename"} = $3;
+ $diff{"filename"} =~ s@_@/@g;
+ $diff{"filename"} =~ s@//@_@g;
+
+ print "diff loaded: $diff{filename} (time=$diff{time},session=$diff{local_session_id})\n";
+ }
+ else {
+ next;
+ }
+
+# Чтение и изменение кодировки содержимого diff-файла
local $/;
open (F, "$file")
or return "Can't open file $file ($_[0]) for reading";
@@ -98,9 +98,12 @@
}
close(F);
$diff{"text"}=$text;
- #print "$file loaded ($diff{day})\n";
- #push @Diffs, \%diff;
+ $diff{"path"}=$path;
+ $diff{"bind_to"}="";
+ $diff{"time_range"}=-1;
+ $diff{"index"}=$i;
+
$Diffs{$file} = \%diff;
$i++;
}
@@ -110,11 +113,6 @@
sub bind_diff
{
-# my $path = shift;
-# my $pid = shift;
-# my $day = shift;
-# my $lab = shift;
-
print "Trying to bind diff...\n";
my $cl = shift;
@@ -126,12 +124,24 @@
for my $diff_key (keys %Diffs) {
my $diff = $Diffs{$diff_key};
- # Check here date, time and user
+ next if ($diff->{"local_session_id"}
+ && $cl->{"local_session_id"}
+ && ($cl->{"local_session_id"} ne $diff->{"local_session_id"}));
+ print "diff of my session found\n";
+
next if ($diff->{"day"} && $cl->{"day"} && ($cl->{"day"} ne $diff->{"day"}));
- #next if (!$diff->{"uid"} && $cl->{"euid"} != $diff->{"uid"});
-
- my $dt=($diff->{"hour"}-$hour)*3600 +($diff->{"min"}-$min)*60 + ($diff->{"sec"}-$sec);
- if ($dt >0 && $dt < $min_dt && ($diff->{"time_range"} <0 || $dt < $diff->{"time_range"})) {
+
+ my $dt;
+ if ($diff->{"time"} && $cl->{"time"}) {
+ $dt = $diff->{"time"} - $cl->{"time"}
+ }
+ else {
+ $dt=($diff->{"hour"}-$hour)*3600 +($diff->{"min"}-$min)*60 + ($diff->{"sec"}-$sec);
+ }
+ if ($dt >0
+ && $dt < $min_dt
+ && ($diff->{"time_range"} <0
+ || $dt < $diff->{"time_range"})) {
print "Approppriate diff found: dt=$dt\n";
if ($diff->{"bind_to"}) {
undef $diff->{"bind_to"}->{"diff"};
@@ -141,7 +151,7 @@
$cl->{"diff"} = $diff_key;
$min_dt = $dt;
- }
+ }
}
}
@@ -281,7 +291,7 @@
$file =~ m@.*/(.*?)-.*@;
- print "+- processing file $file\n" if $Config{"verbose"} =~/y/;
+ print "\n+- processing file $file\n" if $Config{"verbose"} =~/y/;
my $tty = $1;
my $first_pass = 1;
diff -r 44973d76ba4d -r d28dda8ea18f l3-cgi
--- a/l3-cgi Sun Feb 19 16:02:42 2006 +0200
+++ b/l3-cgi Mon Feb 20 17:52:40 2006 +0200
@@ -13,7 +13,7 @@
my %filter;
-for my $key (qw(login_from)) {
+for my $key (qw(login_from local_session_id)) {
$filter{$key} = param($key) if param($key);
$filter{$key} = $ENV{$key} if defined $ENV{$key};
}
diff -r 44973d76ba4d -r d28dda8ea18f l3-frontend
--- a/l3-frontend Sun Feb 19 16:02:42 2006 +0200
+++ b/l3-frontend Mon Feb 20 17:52:40 2006 +0200
@@ -394,6 +394,7 @@
my $cl;
my $last_tty="";
+ my $last_session="";
my $last_day=q();
my $last_wday=q();
my $in_range=0;
@@ -565,11 +566,20 @@
for my $entry_class (sort keys %new_entries_of) {
my $new_commands_section = make_new_entries_table($entry_class=~/[0-9]+\s+(.*)/, \@known_commands);
- my $table_caption = "Таблица ".$table_number++.". ".$Day_Name[$last_wday].". Новые ".$new_entries_of{$entry_class};
+ my $table_caption = "Таблица "
+ . $table_number++
+ . ". "
+ . $Day_Name[$last_wday]
+ . ". Новые "
+ . $new_entries_of{$entry_class};
if ($new_commands_section) {
$result .= "
"
- . "$table_caption |
"
- . "Команда | Описание |
"
+ . ""
+ . "$table_caption | "
+ . "
"
+ . ""
+ . "Команда | Описание | "
+ . "
"
. $new_commands_section
. "
"
}
@@ -637,6 +647,15 @@
$last_tty=$cl->{"tty"};
}
+# Session change
+ if ( $last_session ne $cl->{"local_session_id"}) {
+ my $tty = $cl->{"tty"};
+ $this_day_result .= ""
+ . $Sessions{$cl->{"local_session_id"}}->{"tty"}
+ ."
";
+ $last_session=$cl->{"local_session_id"};
+ }
+
# TIME
$this_day_result .= "$hour:$min:$sec
"
if $Config{"show_time"} =~ /^y/i;
@@ -725,24 +744,29 @@
$result .= "".$Day_Name[$last_wday]."
";
for my $entry_class (keys %new_entries_of) {
- my $new_commands_section = make_new_entries_table("$entry_class", \@known_commands);
- @known_commands = keys %CommandsFDistribution;
-
- my $table_caption = "Таблица ".$table_number++.". Новые ".$new_entries_of{$entry_class}. ". ".$Day_Name[$last_wday];
+ my $new_commands_section = make_new_entries_table($entry_class=~/[0-9]+\s+(.*)/, \@known_commands);
+ my $table_caption = "Таблица "
+ . $table_number++
+ . ". "
+ . $Day_Name[$last_wday]
+ . ". Новые "
+ . $new_entries_of{$entry_class};
if ($new_commands_section) {
- $result .= ""
- . "$table_caption |
"
- . "Команда | Описание |
"
+ $result .= ""
+ . ""
+ . "$table_caption | "
+ . "
"
+ . ""
+ . "Команда | Описание | "
+ . "
"
. $new_commands_section
. "
"
- ;
}
}
+ @known_commands = keys %CommandsFDistribution;
- #$result .= "\n";
$result .= $this_day_result;
- #$result .= "
";
}
return ($result, collapse_list (\@toc));
diff -r 44973d76ba4d -r d28dda8ea18f l3bashrc
--- a/l3bashrc Sun Feb 19 16:02:42 2006 +0200
+++ b/l3bashrc Mon Feb 20 17:52:40 2006 +0200
@@ -17,6 +17,7 @@
_l3_start()
{
+ echo $- | grep -q i || return 0
if _l3_is_running_here
then
_l3_env
@@ -145,12 +146,15 @@
TIME=\"\`date +%s\`\"
DIR=\"\"
[ \"\${1#/}\" = \"\$1\" ] && DIR=\"\$PWD/\"
- DIFFNAME=\"\$PPID_\${TIME}_\`echo \$DIR\$1| /bin/sed s@_@__@ | /bin/sed 's@/@_@g'\`.diff\"
+ DIFFNAME=\"\${L3_SESSION_ID}_\${TIME}\`echo \$DIR\$1| sed s@_@__@ | sed 's@/@_@g'\`.diff\"
old_file=\"/tmp/l3-saved-\$\$.\$RANDOM.\$RANDOM\"
/bin/cp -- \"\$1\" \"\$old_file\" 2> /dev/null
$editor_file \"\$@\" || ERR=\$?
- [ -e \"\$old_file\" ] && diff \"\$old_file\" \"\$1\" > \"\$L3_HOME/\$DIFFNAME\" 2> /dev/null \
- || diff /dev/null \"\$1\" > \"\$L3_HOME/\$DIFFNAME\" 2> /dev/null
+ [ -e \"\$old_file\" ] && diff \"\$old_file\" \"\$1\" > \"\$L3_HOME/\$DIFFNAME\" 2> /dev/null
+ if [ "$?" == 2 ]
+ then
+ diff /dev/null \"\$1\" > \"\$L3_HOME/\$DIFFNAME\" 2> /dev/null
+ fi
/bin/rm \"\$old_file\" 2> /dev/null
return \$ERR
fi