signal-stat option to override signal name
[barcat.git] / barcat
diff --git a/barcat b/barcat
index bdfde47398a22d678ef8e2b02bd01a2afd74193f..d7361a11f9655ab589bbd659bf1c1d72a7c42c0f 100755 (executable)
--- a/barcat
+++ b/barcat
@@ -50,6 +50,7 @@ GetOptions(\%opt,
                $opt{spark} = [split //, $_[1] || '⎽▁▂▃▄▅▆▇█'];
        },
        'stat|s!',
+       'signal-stat=s',
        'unmodified|u!',
        'width|w=i',
        'usage|h' => sub {
@@ -84,9 +85,11 @@ $opt{units}   = [split //, ' kMGTPEZYyzafpnμm'] if $opt{'human-readable'};
 $opt{anchor} //= qr/\A/;
 $opt{'value-length'} = 6 if $opt{units};
 $opt{'value-length'} = 1 if $opt{unmodified};
+$opt{'signal-stat'} //= exists $SIG{INFO} ? 'INFO' : 'QUIT';
 
 my (@lines, @values, @order);
 
+$SIG{$_} = \&show_stat for $opt{'signal-stat'} || ();
 $SIG{ALRM} = sub {
        show_lines();
        alarm $opt{interval} if defined $opt{interval} and $opt{interval} > 0;
@@ -220,7 +223,7 @@ say '' if $opt{spark};
 }
 show_lines();
 
-if ($opt{stat}) {
+sub show_stat {
        if ($opt{hidemin} or $opt{hidemax}) {
                $opt{hidemin} ||= 1;
                $opt{hidemax} ||= @lines;
@@ -238,6 +241,7 @@ if ($opt{stat}) {
        }
        say '';
 }
+show_stat() if $opt{stat};
 
 __END__
 =encoding utf8