home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 1.x / plum10.lzh / plum10 / ctcp.plm < prev    next >
Text File  |  1997-08-13  |  4KB  |  137 lines

  1. package ctcp;
  2.  
  3. $_ = 'ctcp';
  4.  
  5. sub cs_privmsg {
  6.   local($clientno, $prefix, $cmd, $chan, $msg) = @_;
  7.   local($tmp, $rest, $ctcp, $list);
  8.   $tmp = '';
  9.   $rest = $msg;
  10.   while ($rest =~ /^(.*)\cA([^\cA]*)\cA(.*)$/) {
  11.     $tmp .= $1;
  12.     $ctcp = $2;
  13.     $rest = $3;
  14.     if (!&'exist($list, $ctcp)) {
  15.       $tmp .= &xc_scan($clientno, $prefix, $ctcp);
  16.     }
  17.     $list = &'add($list, $ctcp);
  18.   }
  19.   $tmp .= $rest || '';
  20.   return () unless $tmp;
  21.   return ($prefix, $cmd, $chan, $tmp);
  22. }
  23.  
  24. sub cp_privmsg {
  25.   local($clientno, $prefix, $cmd, $chan, $msg) = @_;
  26.   local($tmp, $rest, $ctcp, $list);
  27.   $tmp = '';
  28.   $rest = $msg;
  29.   while ($rest =~ /^(.*)\cA([^\cA]*)\cA(.*)$/) {
  30.     $tmp .= $1;
  31.     $ctcp = $2;
  32.     $rest = $3;
  33.     if (!&'exist($list, $ctcp)) {
  34.       $tmp .= &xc_print($clientno, $prefix, $ctcp);
  35.     }
  36.     $list = &'add($list, $ctcp);
  37.   }
  38.   $tmp .= $rest || '';
  39.   return () unless $tmp;
  40.   return ($prefix, $cmd, $chan, $tmp);
  41. }
  42.  
  43. sub ss_privmsg {
  44.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  45.   local($tmp, $rest, $ctcp, $list);
  46.   $tmp = '';
  47.   $rest = $msg;
  48.   while ($rest =~ /^(.*)\cA([^\cA]*)\cA(.*)$/) {
  49.     $tmp .= $1;
  50.     $ctcp = $2;
  51.     $rest = $3;
  52.     if (!&'exist($list, $ctcp)) {
  53.       $tmp .= &xs_scan($serverno, $prefix, $ctcp);
  54.     }
  55.     $list = &'add($list, $ctcp);
  56.   }
  57.   $tmp .= $rest || '';
  58.   return () unless $tmp;
  59.   return ($prefix, $cmd, $chan, $tmp);
  60. }
  61.  
  62. sub sp_privmsg {
  63.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  64.   local($tmp, $rest, $ctcp, $list);
  65.   $tmp = '';
  66.   $rest = $msg;
  67.   while ($rest =~ /^(.*)\cA([^\cA]*)\cA(.*)$/) {
  68.     $tmp .= $1;
  69.     $ctcp = $2;
  70.     $rest = $3;
  71.     if (!&'exist($list, $ctcp)) {
  72.       $tmp .= &xs_print($serverno, $prefix, $ctcp);
  73.     }
  74.     $list = &'add($list, $ctcp);
  75.   }
  76.   $tmp .= $rest || '';
  77.   return () unless $tmp;
  78.   return ($prefix, $cmd, $chan, $tmp);
  79. }
  80.  
  81. sub xc_scan {
  82.   local($clientno, $prefix, $ctcp) = @_;
  83.   local($null, $cmd, @params) = &'parse($ctcp);
  84.   local($sub);
  85.   foreach $module (&'array($'modulelist[$'userno[$clientno]])) {
  86.     $sub = "${module}'xcs_\L$cmd\E";
  87.     next unless defined(&$sub);
  88.     ($prefix, $cmd, @params) = &$sub($clientno, $prefix, $cmd, @params);
  89.     last unless $cmd;
  90.   }
  91.   return '' unless $cmd;
  92.   return "\cA" . join(' ', $cmd, @params) . "\cA";
  93. }
  94.  
  95. sub xc_print {
  96.   local($clientno, $prefix, $ctcp) = @_;
  97.   local($null, $cmd, @params) = &'parse($ctcp);
  98.   local($sub);
  99.   foreach $module (&'array($'modulelist[$'userno[$clientno]])) {
  100.     $sub = "${module}'xcp_\L$cmd\E";
  101.     next unless defined(&$sub);
  102.     ($prefix, $cmd, @params) = &$sub($clientno, $prefix, $cmd, @params);
  103.     last unless $cmd;
  104.   }
  105.   return '' unless $cmd;
  106.   return "\cA" . join(' ', $cmd, @params) . "\cA";
  107. }
  108.  
  109. sub xs_scan {
  110.   local($serverno, $prefix, $ctcp) = @_;
  111.   local($null, $cmd, @params) = &'parse($ctcp);
  112.   local($sub);
  113.   foreach $module (&'array($'modulelist[$'userno[$serverno]])) {
  114.     $sub = "${module}'xss_\L$cmd\E";
  115.     next unless defined(&$sub);
  116.     ($prefix, $cmd, @params) = &$sub($serverno, $prefix, $cmd, @params);
  117.     last unless $cmd;
  118.   }
  119.   return '' unless $cmd;
  120.   return "\cA" . join(' ', $cmd, @params) . "\cA";
  121. }
  122.  
  123. sub xs_print {
  124.   local($serverno, $prefix, $ctcp) = @_;
  125.   local($null, $cmd, @params) = &'parse($ctcp);
  126.   local($sub);
  127.   foreach $module (&'array($'modulelist[$'userno[$serverno]])) {
  128.     $sub = "${module}'xsp_\L$cmd\E";
  129.     next unless defined(&$sub);
  130.     ($prefix, $cmd, @params) = &$sub($serverno, $prefix, $cmd, @params);
  131.     last unless $cmd;
  132.   }
  133.   return '' unless $cmd;
  134.   return "\cA" . join(' ', $cmd, @params) . "\cA";
  135. }
  136.  
  137.