--- orig/socket-interface.pl 2006-07-06 03:51:50.000000000 +0200 +++ socket-interface.pl 2007-05-31 13:02:42.000000000 +0200 @@ -11,16 +11,16 @@ $VERSION="1.0.1"; %IRSSI = ( - authors => "Matt 'f0rked' Sparks", + authors => "Matt 'f0rked' Sparks, Miklos Vajna", contact => "root\@f0rked.com", name => "socket-interface", description => "provides an interface to irssi via unix sockets", license => "GPLv2", url => "http://f0rked.com", - changed => "2006-07-05" + changed => "2007-05-31" ); -my $socket = "/tmp/irssi_socket"; +my $socket = $ENV{'HOME'}."/.irssi/socket"; # Create the socket unlink $socket; @@ -73,6 +73,9 @@ elsif ($msg =~ /^switch (\d+)$/) { $client->send(switch_to($1)); } + elsif ($msg =~ /^get_lines (\d+)$/) { + $client->send(get_lines($1)); + } elsif ($msg =~ /^send (.+)$/) { $client->send(msg_active($1)); } @@ -113,6 +116,25 @@ } } +# gets the lines from a buffer of a window +sub get_lines { + my($refnum)=@_; + my $window=Irssi::window_find_refnum($refnum); + if ($window) { + my $view = $window->view; + my $line = $view->get_lines(); + my $ret = ""; + while ( defined $line ) { + $ret .= $line->get_text(0) . "\n"; + $line = $line->next(); + } + return $ret; + } + else { + return 0; + } +} + # return highest refnum sub last_refnum { return Irssi::windows_refnum_last();