From 08bf20d43a30a26a72400ccb68748e456cdd0d31 Mon Sep 17 00:00:00 2001 From: Sergei Fedosov Date: Tue, 20 Jul 2021 01:58:15 +0300 Subject: [PATCH] Read all supplied lines from STDIN, not just first one. --- .perlcriticrc | 1 + i3status-anyevent | 74 +++++++++++++++++++++++------------------------ 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/.perlcriticrc b/.perlcriticrc index 73d19c2..ad531cd 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -26,3 +26,4 @@ verbose = 8 [-Modules::RequireVersionVar] [-CodeLayout::RequireTidyCode] [-TestingAndDebugging::RequireUseWarnings] +[-ControlStructures::ProhibitDeepNests] diff --git a/i3status-anyevent b/i3status-anyevent index ab7fd48..dcf1f90 100644 --- a/i3status-anyevent +++ b/i3status-anyevent @@ -229,48 +229,48 @@ sub add_events () { fh => \*STDIN, poll => 'r', cb => sub { - my $msg = <>; - - unless ($STDIN_FIRST_LINE_DROPPED) { - $msg = <>; - $STDIN_FIRST_LINE_DROPPED = 1; - } - - if ($msg) { - # drop leading ',' if present - if (substr ($msg, 0, 1) eq ',') { - $msg = substr $msg, 1; + while (my $msg = <>) { + unless ($STDIN_FIRST_LINE_DROPPED) { + $STDIN_FIRST_LINE_DROPPED = 1; + next; } - my $j = eval { decode_json $msg }; - - if (defined $j) { - # left button click, without shift, ctrl, alt, etc - if (($j->{button} == 1) && ($#{$j->{modifiers}} < 0)) { - foreach (@{$CONF->{apps}}) { - unless (defined $_->{name}) { - next; - } - - unless (defined $j->{name}) { - next; - } - - if ($j->{name} eq $_->{name}) { - spawn ($_->{cmd}); - last; - } - } + if ($msg) { + # drop leading ',' if present + if (substr ($msg, 0, 1) eq ',') { + $msg = substr $msg, 1; } - if (($j->{name} eq 'wallclock') && ($CONF->{clock}->{enabled})) { - if ($CONF->{clock}->{left_click}->{enabled}) { - if (($j->{button} == 1) && ($#{$j->{modifiers}} < 0)) { - spawn ($CONF->{clock}->{left_click}->{cmd}); + my $j = eval { decode_json $msg }; + + if (defined $j) { + # left button click, without shift, ctrl, alt, etc + if (($j->{button} == 1) && ($#{$j->{modifiers}} < 0)) { + foreach (@{$CONF->{apps}}) { + unless (defined $_->{name}) { + next; + } + + unless (defined $j->{name}) { + next; + } + + if ($j->{name} eq $_->{name}) { + spawn ($_->{cmd}); + last; + } } - } elsif ($CONF->{clock}->{right_click}->{enabled}) { - if (($j->{button} == 2) && ($#{$j->{modifiers}} < 0)) { - spawn ($CONF->{clock}->{right_click}->{cmd}); + } + + if (($j->{name} eq 'wallclock') && ($CONF->{clock}->{enabled})) { + if ($CONF->{clock}->{left_click}->{enabled}) { + if (($j->{button} == 1) && ($#{$j->{modifiers}} < 0)) { + spawn ($CONF->{clock}->{left_click}->{cmd}); + } + } elsif ($CONF->{clock}->{right_click}->{enabled}) { + if (($j->{button} == 2) && ($#{$j->{modifiers}} < 0)) { + spawn ($CONF->{clock}->{right_click}->{cmd}); + } } } }