lilalo
diff l3-agent @ 115:9e6359b7ad55
Исправлена ошибка с смешением выводв сеансов
Добавлена поддержка таблуяции (tab completion)
l3config.pm перенесён в /etc/lilalo/ ; возможно не окончательно
Имя сервера для l3-upload не прописывается теперь жёстко в коде, а берётся из конфигурационного файла
Добавлена поддержка таблуяции (tab completion)
l3config.pm перенесён в /etc/lilalo/ ; возможно не окончательно
Имя сервера для l3-upload не прописывается теперь жёстко в коде, а берётся из конфигурационного файла
author | igor |
---|---|
date | Sun Mar 09 22:54:22 2008 +0200 (2008-03-09) |
parents | 658b4ea105c1 |
children | 71bd999bcb04 |
line diff
1.1 --- a/l3-agent Sun Mar 09 02:38:56 2008 +0200 1.2 +++ b/l3-agent Sun Mar 09 22:54:22 2008 +0200 1.3 @@ -15,7 +15,7 @@ 1.4 use Time::Local 'timelocal_nocheck'; 1.5 use IO::Socket; 1.6 1.7 -use lib "/usr/local/bin"; 1.8 +use lib "/etc/lilalo"; 1.9 use l3config; 1.10 1.11 1.12 @@ -250,9 +250,7 @@ 1.13 my $cline_re2_v3 = qr/$cline_re2_v3_base$/sx; 1.14 1.15 1.16 - 1.17 - my $vt = Term::VT102->new ( 'cols' => $Config{"terminal_width"}, 1.18 - 'rows' => $Config{"terminal_height"}); 1.19 + my %vt; # Хэш виртуальных терминалов. По одному на каждый сеанс 1.20 my $cline_vt = Term::VT102->new ( 1.21 'cols' => $Config{"terminal_width"}, 1.22 'rows' => $Config{"terminal_height"}); 1.23 @@ -282,6 +280,12 @@ 1.24 $file =~ m@.*/([^/]*)\.script$@; 1.25 $local_session_id = $1; 1.26 1.27 + if (not defined($vt{$local_session_id})) { 1.28 + $vt{$local_session_id} = Term::VT102->new ( 1.29 + 'cols' => $Config{"terminal_width"}, 1.30 + 'rows' => $Config{"terminal_height"}); 1.31 + } 1.32 + 1.33 #Если файл только что появился, 1.34 #пытаемся найти и загрузить информацию о соответствующей ему сессии 1.35 if (!$Script_Files{$file}) { 1.36 @@ -413,7 +417,7 @@ 1.37 # Output 1.38 if (!$last_cl{"suppress_output"} || $last_cl{"err"}) { 1.39 for (my $i=0; $i<$Config{"terminal_height"}; $i++) { 1.40 - my $line= $vt->row_plaintext($i); 1.41 + my $line= $vt{$local_session_id}->row_plaintext($i); 1.42 next if !defined ($line) ; #|| $line =~ /^\s*$/; 1.43 $line =~ s/\s*$//; 1.44 $line .= "\n" unless $line =~ /^\s*$/; 1.45 @@ -424,7 +428,7 @@ 1.46 $last_cl{"output"}= ""; 1.47 } 1.48 1.49 - $vt->reset(); 1.50 + $vt{$local_session_id}->reset(); 1.51 1.52 1.53 # Save 1.54 @@ -538,7 +542,7 @@ 1.55 # Output 1.56 if (!$last_cl{"suppress_output"} || $last_cl{"err"}) { 1.57 for (my $i=0; $i<$Config{"terminal_height"}; $i++) { 1.58 - my $line= $vt->row_plaintext($i); 1.59 + my $line= $vt{$local_session_id}->row_plaintext($i); 1.60 next if !defined ($line) ; #|| $line =~ /^\s*$/; 1.61 $line =~ s/\s*$//; 1.62 $line .= "\n" unless $line =~ /^\s*$/; 1.63 @@ -549,7 +553,7 @@ 1.64 $last_cl{"output"}= ""; 1.65 } 1.66 1.67 - $vt->reset(); 1.68 + $vt{$local_session_id}->reset(); 1.69 1.70 1.71 # Changing encoding 1.72 @@ -575,7 +579,7 @@ 1.73 $last_output_length+=length($_); 1.74 #if (!$cl{"suppress_output"} || $last_output_length < 5000) { 1.75 if ($last_output_length < 50000) { 1.76 - $vt->process("$_"."\n") 1.77 + $vt{$local_session_id}->process("$_"."\n") 1.78 } 1.79 else 1.80 {