/usr/share/irssi/scripts/file.pl is in irssi-scripts 20120326.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | my $help = <<EOF;
Usage: (all on one line)
/file [-raw] [-command]
[-msg [target]] [-notice [target]]
[-prefix "text"] [-postfix "text"]
filename
-raw: output contents of file as raw irc data
-command: run contents of file as irssi commands
-msg: send as messages to active window (default) or target
-notice: send as notices to active window or target
-prefix: add "text" in front of output
-postfix: add "text" after output
-echo abuses a bug in the script and is useful for testing
EOF
$VERSION = 1.0;
%IRSSI = (
authors => "David Leadbeater",
name => "file.pl",
description => "A command to output content of files in various ways",
license => "GNU GPLv2 or later",
url => "http://irssi.dgl.cx/"
);
use strict;
Irssi::command_bind('file', sub {
my $data = shift;
if($data eq 'help') {
print $help;
return;
}
my($type, $target, $prefix, $postfix);
$type = 'msg';
$target = '*';
$prefix = '';
$postfix = '';
while($data =~ s/^-([^ ]+) //g) {
last if $data eq '-';
if($1 eq 'msg' || $1 eq 'notice') {
$type = $1;
next unless $data =~ / /; # >1 params left
$data =~ s/^([^ ]+) //;
next unless $1;
$target = $1;
}elsif($1 eq 'prefix') {
$data =~ s/^(?:\"([^"]+)\"|([^ ]+)) //;
$prefix = $1 || $2 . ' ';
}elsif($1 eq 'postfix') {
$data =~ s/^(?:\"([^"]+)\"|([^ ]+)) //;
$postfix = ' ' . $1 || $2;
}else{ # Other options are automatic
$type = $1;
}
}
# or do borrowed from one of juerd's scripts (needs 5.6 though)
open(FILE, "<$data") or do {
print "Error opening '$data': $!";
return;
};
while(<FILE>) {
chomp;
if($type eq 'raw') {
Irssi::active_server->send_raw($prefix . $_ . $postfix);
}elsif($type eq 'command') {
Irssi::active_win->command($prefix . $_ . $postfix);
}else{
Irssi::active_win->command("$type $target $prefix$_$postfix");
}
}
close FILE;
} );
# little known way to get -options to tab complete :)
Irssi::command_set_options('file','raw command prefix postfix msg notice');
|