]> git.vpit.fr Git - perl/scripts/xchat.git/blobdiff - Xchat/XPI.pm
Freshen the default banner
[perl/scripts/xchat.git] / Xchat / XPI.pm
index 7481f5c0ac88c395510243a5a5758e5f39fcea70..6811e63b3bc0355bc355b7841b77eb343aa51f54 100644 (file)
@@ -13,7 +13,7 @@ use constant { COLOR_TAG => "\00307" };
 
 my @attributes;
 BEGIN {
- @attributes = qw/tag name version desc author email url banner/;
+ @attributes = qw<tag name version desc author email url banner>;
 }
 
 local *PH;
@@ -23,7 +23,8 @@ sub new {
  $class    = ref($class) || $class;
  my %opts  = @_;
 
- my $caller = (caller 0)[0];
+ my ($caller, $file) = (caller 0)[0, 1];
+
  unless (defined $opts{tag}) {
   $opts{tag}     = ($caller =~ /([^:]*):*$/) ? $1 : 'UNKNOWN';
  }
@@ -39,11 +40,11 @@ sub new {
   $opts{version} = $version;
  }
  unless (defined $opts{banner}) {
-  my $email      = $opts{email};
-  $email         = "<$email>" if defined $email;
-  my $who        = join ', ', grep defined, $opts{author}, $email, $opts{url};
+  my $author     = defined $opts{author} ? $opts{author}    : 'unknown hacker';
+  my $email      = defined $opts{email}  ? "<$opts{email}>" : undef;
+  my $who        = join ', ', grep defined, $email, $opts{url};
   $who           = " ($who)"  if length $who;
-  $opts{banner}  = $opts{desc} . $who;
+  $opts{banner}  = $opts{desc} . " by $author$who";
  }
 
  my $ph = bless \do { local *PH }, $class;
@@ -52,7 +53,11 @@ sub new {
  *$ph->{$_}  = $opts{$_} for @attributes;
  *$ph->{buf} = '';
 
- Xchat::register(@opts{qw/name version banner/}, sub {
+ my $internal_pkg = Xchat::Embed::file2pkg($file);
+ no warnings 'redefine';
+ local *Xchat::Embed::find_pkg   = sub { $internal_pkg, $caller };
+ local *HexChat::Embed::find_pkg = sub { $internal_pkg, $caller };
+ Xchat::register(@opts{qw<name version banner>}, sub {
   $ph->flush;
   if (*$ph->{atexit_id}) {
    my @callbacks = sort { *$ph->{atexit}{$b} <=> *$ph->{atexit}{$a} }