-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcmdline.pl
90 lines (88 loc) · 2.26 KB
/
cmdline.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Copyright 2012 - 2013, Steve Rader
# Copyright 2013 - 2014, Scott Kostyshak
sub cmd_line {
&audit("Inside of cmd_line");
my ($prompt) = @_;
my $str = &prompt_str($prompt);
if ( $str eq '' ) {
&draw_prompt_line('');
return;
}
if ( $str =~ /^!(.*)/ ) {
my $rtn = &shell_command($1);
return;
}
if ( $str =~ /^\d+$/ ) {
if ( ! defined $taskid2report[$str] ) {
$error_msg = "Error: task number $str not found";
&draw_error_msg();
return;
}
$task_selected_idx = $taskid2report[$str] - 1;
if ( $display_start_idx + $REPORT_LINES < $task_selected_idx ) {
$display_start_idx = int($task_selected_idx - $REPORT_LINES + ($REPORT_LINES / 2));
}
if ( $display_start_idx > $task_selected_idx ) {
$display_start_idx = int($task_selected_idx - $REPORT_LINES + ($REPORT_LINES / 2));
if ( $display_start_idx < 0 ) {
$display_start_idx = 0;
} elsif ( $display_start_idx > $task_selected_idx) {
$display_start_idx = $task_selected_idx;
}
}
&draw_screen();
return;
}
if ( $str =~ /^s\/(.*?)\/(.*)\/$/ || $str =~ /^%s\/(.*?)\/(.*)\/$/ ) {
my ($old,$new) = ($1,$2);
my $rtn = &task_modify("/$old/$new/");
$reread_needed = 1;
return;
}
if ( $str eq 'help' || $str eq 'h' ) {
&shell_exec("view $commands_file",'no-wait');
return;
}
if ( $str =~ /^help (.*)/ || $str =~ /^h (.*)/ ) {
my $p = $1;
my $tmp_file = "/tmp/vit-help.$$";
open(IN,"<$commands_file");
open(OUT,">$tmp_file");
print OUT "\n";
while(<IN>) {
if ( $_ =~ /$p/ ) {
print OUT $_;
}
}
close(IN);
print OUT "\n";
close(OUT);
&shell_exec("view $tmp_file",'no-wait');
unlink($tmp_file);
return;
}
if ( $str eq 'q' ) {
&clean_exit();
}
if ( grep(/^$str$/,@report_types) ) {
$prev_command = $current_command;
$current_command = $str;
&read_report('init');
&draw_screen();
return;
}
if ( $str =~ /^(.*?) .*/ ) {
my $s = $1;
if ( grep(/^$s/,@report_types) ) {
$prev_command = $current_command;
$current_command = $str;
&read_report('init');
&draw_screen();
return;
}
}
$error_msg = "$str: command not found";
&draw_error_msg();
return;
}
return 1;