Work around a bug in irssi on gentoo, leading to random zombies lurching about
[twirssi-net-twitter-lite.git] / twirssi.pl
index 3d292f42f4b1cbba0b77c62ec542af6b730ff762..267db1114d01e79c6f437a22e70544f9eb1d7552 100644 (file)
@@ -7,6 +7,7 @@ use File::Temp;
 use LWP::Simple;
 use Data::Dumper;
 use Encode;
+use POSIX qw/:sys_wait_h/;
 $Data::Dumper::Indent = 1;
 
 use vars qw($VERSION %IRSSI);
@@ -968,7 +969,7 @@ sub do_updates {
     }
 
     foreach my $t ( reverse @$tweets ) {
-        my $text = &get_text($t, $obj);
+        my $text = &get_text( $t, $obj );
         my $reply = "tweet";
         if (    Irssi::settings_get_bool("show_reply_context")
             and $t->{in_reply_to_screen_name} ne $username
@@ -1185,6 +1186,9 @@ sub monitor_child {
       if &debug;
     my ($new_last_poll);
 
+    # reap any random leftover processes - work around a bug in irssi on gentoo
+    waitpid(-1, WNOHANG);
+
     # first time we run we don't want to print out *everything*, so we just
     # pretend
 
@@ -1659,16 +1663,15 @@ sub normalize_username {
 }
 
 sub get_text {
-    my $tweet = shift;
+    my $tweet  = shift;
     my $object = shift;
-    my $text = decode_entities( $tweet->{text} );
-    if ($tweet->{truncated}) {
-        if (exists $tweet->{retweeted_status}) {
-            $text = "RT $tweet->{retweeted_status}{user}{screen_name}: " .
-                    "$tweet->{retweeted_status}{text}";
+    my $text   = decode_entities( $tweet->{text} );
+    if ( $tweet->{truncated} ) {
+        if ( exists $tweet->{retweeted_status} ) {
+            $text = "RT \@$tweet->{retweeted_status}{user}{screen_name}: "
+              . "$tweet->{retweeted_status}{text}";
         } elsif ( $object->isa('Net::Twitter') ) {
-            $text .=
-                " -- http://twitter.com/$tweet->{user}{screen_name}"
+            $text .= " -- http://twitter.com/$tweet->{user}{screen_name}"
               . "/status/$tweet->{id}";
         }
     }