r673 - don't allow monitor_child to process partial files. This is how it should...
[twirssi-net-twitter-lite.git] / twirssi.pl
index 2f6bc8d4b2bdd551688da42cd6b6fe8332ae7134..daa01af72705b08ef33cbb0801158c176aa49000 100644 (file)
@@ -10,8 +10,8 @@ $Data::Dumper::Indent = 1;
 
 use vars qw($VERSION %IRSSI);
 
-$VERSION = "2.2.4beta";
-my ($REV) = '$Rev: 652 $' =~ /(\d+)/;
+$VERSION = "2.2.5beta";
+my ($REV) = '$Rev: 673 $' =~ /(\d+)/;
 %IRSSI = (
     authors     => 'Dan Boger',
     contact     => 'zigdon@gmail.com',
@@ -20,7 +20,7 @@ my ($REV) = '$Rev: 652 $' =~ /(\d+)/;
       . 'Can optionally set your bitlbee /away message to same',
     license => 'GNU GPL v2',
     url     => 'http://twirssi.com',
-    changed => '$Date: 2009-06-29 14:36:38 -0700 (Mon, 29 Jun 2009) $',
+    changed => '$Date: 2009-07-16 16:50:30 -0700 (Thu, 16 Jul 2009) $',
 );
 
 my $window;
@@ -758,7 +758,7 @@ sub get_updates {
     my $pid = fork();
 
     if ($pid) {    # parent
-        Irssi::timeout_add_once( 5000, 'monitor_child', [ $filename, 0 ] );
+        Irssi::timeout_add_once( 5000, 'monitor_child', [ "$filename.done", 0 ] );
         Irssi::pidwait_add($pid);
     } elsif ( defined $pid ) {    # child
         close STDIN;
@@ -800,6 +800,7 @@ sub get_updates {
             print $fh "-- $new_poll";
         }
         close $fh;
+        rename $filename, "$filename.done";
         exit;
     } else {
         &ccrap("Failed to fork for updating: $!");
@@ -852,7 +853,7 @@ sub do_updates {
 
     foreach my $t ( reverse @$tweets ) {
         my $text = decode_entities( $t->{text} );
-        $text = &hilight($text);
+        $text =~ s/[\n\r]/ /g;
         my $reply = "tweet";
         if (    Irssi::settings_get_bool("show_reply_context")
             and $t->{in_reply_to_screen_name} ne $username
@@ -872,13 +873,13 @@ sub do_updates {
 
             if ($context) {
                 my $ctext = decode_entities( $context->{text} );
-                $ctext = &hilight($ctext);
+                $ctext =~ s/[\n\r]/ /g;
                 if ( $context->{truncated} and ref($obj) ne 'Net::Identica' ) {
                     $ctext .=
                         " -- http://twitter.com/$context->{user}{screen_name}"
                       . "/status/$context->{id}";
                 }
-                printf $fh "id:%d account:%s nick:%s type:tweet %s\n",
+                printf $fh "id:%u account:%s nick:%s type:tweet %s\n",
                   $context->{id}, $username,
                   $context->{user}{screen_name}, $ctext;
                 $reply = "reply";
@@ -891,11 +892,11 @@ sub do_updates {
             $text .= " -- http://twitter.com/$t->{user}{screen_name}"
               . "/status/$t->{id}";
         }
-        printf $fh "id:%d account:%s nick:%s type:%s %s\n",
+        printf $fh "id:%u account:%s nick:%s type:%s %s\n",
           $t->{id}, $username, $t->{user}{screen_name}, $reply, $text;
         $new_poll_id = $t->{id} if $new_poll_id < $t->{id};
     }
-    printf $fh "id:%d account:%s type:last_id timeline\n",
+    printf $fh "id:%u account:%s type:last_id timeline\n",
       $new_poll_id, $username;
 
     print scalar localtime, " - Polling for replies" if &debug;
@@ -921,16 +922,16 @@ sub do_updates {
           if exists $friends{ $t->{user}{screen_name} };
 
         my $text = decode_entities( $t->{text} );
-        $text = &hilight($text);
+        $text =~ s/[\n\r]/ /g;
         if ( $t->{truncated} ) {
             $text .= " -- http://twitter.com/$t->{user}{screen_name}"
               . "/status/$t->{id}";
         }
-        printf $fh "id:%d account:%s nick:%s type:tweet %s\n",
+        printf $fh "id:%u account:%s nick:%s type:tweet %s\n",
           $t->{id}, $username, $t->{user}{screen_name}, $text;
         $new_poll_id = $t->{id} if $new_poll_id < $t->{id};
     }
-    printf $fh "id:%d account:%s type:last_id reply\n", $new_poll_id, $username;
+    printf $fh "id:%u account:%s type:last_id reply\n", $new_poll_id, $username;
 
     print scalar localtime, " - Polling for DMs" if &debug;
     $new_poll_id = 0;
@@ -952,12 +953,12 @@ sub do_updates {
 
     foreach my $t ( reverse @$tweets ) {
         my $text = decode_entities( $t->{text} );
-        $text = &hilight($text);
-        printf $fh "id:%d account:%s nick:%s type:dm %s\n",
+        $text =~ s/[\n\r]/ /g;
+        printf $fh "id:%u account:%s nick:%s type:dm %s\n",
           $t->{id}, $username, $t->{sender_screen_name}, $text;
         $new_poll_id = $t->{id} if $new_poll_id < $t->{id};
     }
-    printf $fh "id:%d account:%s type:last_id dm\n", $new_poll_id, $username;
+    printf $fh "id:%u account:%s type:last_id dm\n", $new_poll_id, $username;
 
     print scalar localtime, " - Polling for subscriptions" if &debug;
     if ( $obj->can('search') and $id_map{__searches}{$username} ) {
@@ -987,13 +988,13 @@ sub do_updates {
             }
 
             $id_map{__searches}{$username}{$topic} = $search->{max_id};
-            printf $fh "id:%d account:%s type:searchid topic:%s\n",
+            printf $fh "id:%u account:%s type:searchid topic:%s\n",
               $search->{max_id}, $username, $topic;
 
             foreach my $t ( reverse @{ $search->{results} } ) {
                 my $text = decode_entities( $t->{text} );
-                $text = &hilight($text);
-                printf $fh "id:%d account:%s nick:%s type:search topic:%s %s\n",
+                $text =~ s/[\n\r]/ /g;
+                printf $fh "id:%u account:%s nick:%s type:search topic:%s %s\n",
                   $t->{id}, $username, $t->{from_user}, $topic, $text;
                 $new_poll_id = $t->{id}
                   if not $new_poll_id
@@ -1167,7 +1168,8 @@ sub monitor_child {
                     $window->printformat(
                         $line->[0],
                         "twirssi_" . $line->[1],
-                        @$line[ 2 .. $#$line ]
+                        @$line[ 2 .. $#$line-1 ],
+                        &hilight($line->[-1])
                     );
                 }
             }
@@ -1576,7 +1578,7 @@ if ($window) {
         "twitter_unfollow",
         &gen_cmd(
             "/twitter_unfriend <username>",
-            "destroy_follow",
+            "destroy_friend",
             sub { &notice("Stopped following $_[0]"); delete $nicks{ $_[0] }; }
         )
     );