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