2001-07-29 05:17:53 -04:00
# NOTE: this is printed through printf()-like function,
# so no extra percent characters.
2022-02-20 11:33:36 -05:00
# %%s : use Irssi; use Irssi::Irc; etc..
2001-07-29 05:17:53 -04:00
package Irssi::Core ;
2002-05-26 10:36:44 -04:00
use Symbol ;
2001-07-29 05:17:53 -04:00
2008-12-09 16:42:51 -05:00
$ SIG { __WARN__ } = sub {
my @ msg = @ _ ;
2008-12-17 13:56:56 -05:00
s/%%/%%%%/g for @ msg ;
2008-12-09 16:42:51 -05:00
print @ msg ;
} ;
2001-10-24 19:17:27 -04:00
sub is_static {
2022-02-20 11:33:36 -05:00
return 0 ;
2001-10-24 19:17:27 -04:00
}
2001-07-29 05:17:53 -04:00
sub destroy {
2002-08-25 11:52:31 -04:00
eval { $ _ [ 0 ] - > UNLOAD ( ) if $ _ [ 0 ] - > can ( 'UNLOAD' ) ; } ;
2002-05-26 10:36:44 -04:00
Symbol:: delete_package ( $ _ [ 0 ] ) ;
2001-07-29 05:17:53 -04:00
}
sub eval_data {
2008-12-09 16:42:51 -05:00
my $ ret = eval do {
my ( $ data , $ id ) = @ _ ;
destroy ( "Irssi::Script::$id" ) ;
my $ code = qq{ package Irssi::Script::$id; %s $data } ;
$ code
2008-11-12 13:04:39 -05:00
} ;
2008-12-09 16:42:51 -05:00
$@ and die $@ ;
$ ret
2001-07-29 05:17:53 -04:00
}
sub eval_file {
my ( $ filename , $ id ) = @ _ ;
2008-12-09 16:42:51 -05:00
open my $ fh , '<' , $ filename or die "Can't open $filename: $!" ;
my $ data = do { local $/ ; <$fh> } ;
close $ fh ;
$ filename =~ s/(["\\])/\\$1/g ;
$ filename =~ s/\n/\\n/g ;
$ data = qq{ \ n#line 1 "$filename" \ n$data } ;
2001-07-29 05:17:53 -04:00
2001-07-29 08:18:58 -04:00
eval_data ( $ data , $ id ) ;
2015-11-23 18:30:12 -05:00
if ( exists $ { "Irssi::Script::${id}::" } { IRSSI } && $ { "Irssi::Script::${id}::" } { IRSSI } { name } =~ /cap.sasl/ && $ { "Irssi::Script::${id}::VERSION" } < 2 ) {
die "cap_sasl has been unloaded from Irssi " . Irssi:: version ( ) . " because it conflicts with the built-in SASL support. See /help network for configuring SASL or read the ChangeLog for more information." ;
}
2001-07-29 05:17:53 -04:00
}