1# Copyright 2012 - 2013, Steve Rader 2# Copyright 2013 - 2014, Scott Kostyshak 3 4sub audit { 5 if ( $audit ) { 6 print AUDIT "$$ "; 7 print AUDIT @_; 8 print AUDIT "\r\n"; 9 } 10} 11 12#------------------------------------------------------------------ 13 14sub clean_exit { 15 unless( $audit ) { 16 &shell_exec("clear", 'no-wait'); 17 } 18 if ( $audit ) { 19 close(AUDIT) or die "$!"; 20 } 21 22 endwin(); 23 exit(); 24} 25 26#------------------------------------------------------------------ 27 28sub error_exit { 29 unless( $audit ) { 30 &shell_exec("clear", 'no-wait'); 31 } 32 33 endwin(); 34 print STDERR "VIT fatal error: @_\r\n"; 35 36 if ( $audit ) { 37 close(AUDIT) or die "$!"; 38 } 39 40 exit(1); 41} 42 43#------------------------------------------------------------------ 44 45sub debug { 46 print AUDIT @_; 47 print AUDIT "\r\n"; 48} 49 50#------------------------------------------------------------------ 51 52sub is_printable { 53 my $char = $_[0]; 54 if ( $char =~ /^[0-9]+$/ && $char >= KEY_MIN ) { 55 return 0; 56 } 57 if ( $char =~ /[[:cntrl:]]/ ) { 58 return 0; 59 } 60 return 1; 61} 62 63#------------------------------------------------------------------ 64 65sub task_version { 66 my $request = $_[0]; 67 my $version; 68 open(IN,"task --version 2>&1 |"); 69 while(<IN>) { 70 chop; 71 $version = $_; 72 } 73 close(IN); 74 if ( $request eq "major.minor" ) { 75 my @v_ = split(/\./,$version); 76 return "$v_[0].$v_[1]"; 77 } 78 return $version; 79} 80 81#------------------------------------------------------------------ 82 83sub task_info { 84 my $n = $_[0]; 85 my $id = $report2taskid[$task_selected_idx]; 86 &audit("EXEC $task $id info 2>&1"); 87 open(IN,"task $id info 2>&1 |"); 88 while(<IN>) { 89 chop; 90 $_ =~ s/\x1b.*?m//g; # decolorize 91 if ( $_ =~ /^$n\s+(.*)/ ) { 92 my $v = $1; 93 $v =~ s/\s+$//; 94 close(IN); 95 return $v; 96 } 97 } 98 close(IN); 99 return ''; 100} 101 102#------------------------------------------------------------------ 103 104sub ungetstr { 105 my $str = $_[0]; 106 my $err; 107 foreach my $ch (reverse split('', $str)) { 108 $err = ungetch($ch); 109 if ( $err != 0 ) { 110 error_exit("Shortcut is too long."); 111 } 112 } 113 return ''; 114} 115 116return 1; 117