home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_28_2.lzh / module / auto / package.plm < prev    next >
Text File  |  1998-10-15  |  21KB  |  719 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
  2. # $Id: package.plm,v 2.25 1998/10/13 14:05:46 hasegawa Exp $
  3. # copyright (c)1998 pupu_j <hasegawa@agusa.nuie.nagoya-u.ac.jp>
  4.  
  5. package auto_package;
  6.  
  7. $READSIZE = 4096;
  8. $WRITESIZE = 4;
  9. $DIRECTORY = '.';
  10. $CLIENTINFO = 'DCC';
  11. $SOCKADDR = 'S n N x8';
  12. $TIMEOUT = 3600;
  13. $FREQUENCY = 3600;
  14.  
  15. $_ = 'auto_package';
  16.  
  17. sub main_loop {
  18.   local($userno) = @_;
  19.   foreach $sno (&'array($dccserverlist)) {
  20.     if (vec($'rout, $sno, 1)) {
  21.       &dcc_server($sno);
  22.       vec($'rout, $sno, 1) = 0;
  23.     } elsif (time() - $'access[$sno] > $TIMEOUT) {
  24.       &'close($sno);
  25.       $dccserverlist = &'remove($dccserverlist, $sno);
  26.       $reply = &'property($'userno[$server[$sno]], 'geterror');
  27.       &privmsg($server[$sno], $chan[$sno], $reply) if $reply;
  28.     }
  29.   }
  30.   foreach $cno (&'array($dccclientlist)) {
  31.     if (vec($'rout, $cno, 1)) {
  32.       &dcc_client($cno);
  33.       vec($'rout, $cno, 1) = 0;
  34.     } elsif (time() - $'access[$cno] > $TIMEOUT) {
  35.       &'close($cno);
  36.       $dccclientlist = &'remove($dccclientlist, $cno);
  37.       $reply = &'property($'userno[$server[$cno]], 'senderror');
  38.       &privmsg($server[$cno], $chan[$cno], $reply) if $reply;
  39.       &add_msg($userno, $info[$cno]);
  40.     }
  41.   }
  42.   foreach $lno (&'array($dcclistenlist)) {
  43.     if (vec($'rout, $lno, 1)) {
  44.       &dcc_listen($lno);
  45.       vec($'rout, $lno, 1) = 0;
  46.     } elsif (time() - $'access[$lno] > $TIMEOUT) {
  47.       &'close($lno);
  48.       $dcclistenlist = &'remove($dcclistenlist, $lno);
  49.       $reply = &'property($'userno[$server[$cno]], 'senderror');
  50.       &privmsg($server[$cno], $chan[$cno], $reply) if $reply;
  51.       &add_msg($userno, $info[$lno]);
  52.     }
  53.   }
  54. }
  55.  
  56. sub ss_join {
  57.   local($serverno, $prefix, $cmd, @params) = @_;
  58.   &receive($serverno, $prefix);
  59.   return ($prefix, $cmd, @params);
  60. }
  61.  
  62. sub ss_nick {
  63.   local($serverno, $prefix, $cmd, @params) = @_;
  64.   local($nick);
  65.   $nick = &'prefix($prefix);
  66.   $last{$serverno, $params[0]} = $last{$serverno, $nick};
  67.   delete($last{$serverno, $nick});
  68.   $user = $params[0] . substr($prefix, index($prefix, '!'));
  69.   &receive($serverno, $user);
  70.   return ($prefix, $cmd, @params);
  71. }
  72.  
  73. sub ss_part {
  74.   local($serverno, $prefix, $cmd, @params) = @_;
  75.   &receive($serverno, $prefix);
  76.   return ($prefix, $cmd, @params);
  77. }
  78.  
  79. sub ss_topic {
  80.   local($serverno, $prefix, $cmd, @params) = @_;
  81.   &receive($serverno, $prefix);
  82.   return ($prefix, $cmd, @params);
  83. }
  84.  
  85. sub ss_kick {
  86.   local($serverno, $prefix, $cmd, @params) = @_;
  87.   &receive($serverno, $prefix);
  88.   return ($prefix, $cmd, @params);
  89. }
  90.  
  91. sub ss_mode {
  92.   local($serverno, $prefix, $cmd, @params) = @_;
  93.   &receive($serverno, $prefix);
  94.   return ($prefix, $cmd, @params);
  95. }
  96.  
  97. sub ss_privmsg {
  98.   local($serverno, $prefix, $cmd, @params) = @_;
  99.   local($userno, $str, $to, $text, $reply, $who);
  100.   $userno = $'userno[$serverno];
  101.   &receive($serverno, $prefix);
  102.   if ($params[1]) {
  103.     foreach $get (&'property($userno, 'get')) {
  104.       next unless $params[1] eq $get;
  105.       &get($serverno, $prefix, $params[0]);
  106.       return ($prefix, $cmd, @params);
  107.     }
  108.     ($str, $to, $text) = split(/\s+/, $params[1], 3);
  109.     if ($text) {
  110.       foreach $send (&'property($userno, 'send')) {
  111.         next unless $str eq $send;
  112.         &send($serverno, $prefix, $params[0], $to, $text);
  113.         return ($prefix, $cmd, @params);
  114.       }
  115.     }
  116.   }
  117.   return ($prefix, $cmd, @params);
  118. }
  119.  
  120. sub cpss_dcc {
  121.   local($serverno, $prefix, $cmd, @params) = @_;
  122.   local(@msg, $dir, $name, $sno, $from);
  123.   @msg = split(/\s+/, $params[1]);
  124.   if ("\L$msg[0]\E" eq 'send') {
  125.     foreach $dcc (&'array($dcclist[$serverno])) {
  126.       $from = (split(/\s+/, $dcc))[0];
  127.       next if $from ne $prefix;
  128.       $dcclist[$serverno] = &'remove($dcclist[$serverno], $dcc);
  129.     }
  130.     $dcclist[$serverno] = &'add($dcclist[$serverno], join(' ', $prefix, @params));
  131.   }
  132.   return ($prefix, $cmd, @params);
  133. }
  134.  
  135. sub dcc_server {
  136.   local($sno) = @_;
  137.   local($socket, $tmp, $size, $length, $idx, $line, $reply, $chan, $who);
  138.   if ($size[$sno] - $done[$sno] > $READSIZE) {
  139.     $size = $size[$sno] - $done[$sno];
  140.   } else {
  141.     $size = $READSIZE;
  142.   }
  143.   $tmp = '';
  144.   $socket = $'socket[$sno];
  145.   if ($length = sysread($socket, $tmp, $size)) {
  146.     if (open(FILE, ">>$name[$sno]")) {
  147.       select((select(FILE), $| = 1)[0]);
  148.       print FILE $tmp;
  149.       close(FILE);
  150.     }
  151.     $done[$sno] += $length;
  152.     print $socket pack('N', $done[$sno]);
  153.     if ($done[$sno] == $size[$sno]) {
  154.       &'close($sno);
  155.       $dccserverlist = &'remove($dccserverlist, $sno);
  156.       $line = join(' ', &'date('%Y/%m/%d %H:%M:%S'), $info[$sno]);
  157.       $line = &jis_code($line, $code) if $code;
  158.       &add_msg($userno, $line);
  159.       $reply = &'property($'userno[$server[$sno]], 'accept');
  160.       $chan = (split(/\s+/, $info[$sno]))[2];
  161.       if ($chan =~ /^[\#\&\+]/) {
  162.         $who = $chan;
  163.       } else {
  164.         $who = &'prefix((split(/\s+/, $info[$sno]))[1]);
  165.       }
  166.       &privmsg($server[$sno], $who, $reply) if $reply;
  167.     }
  168.   } else {
  169.     &'close($sno);
  170.     $dccserverlist = &'remove($dccserverlist, $sno);
  171.     $reply = &'property($'userno[$server[$sno]], 'geterror');
  172.     &privmsg($server[$sno], $chan[$sno], $reply) if $reply;
  173.   }
  174. }
  175.  
  176. sub dcc_client {
  177.   local($cno) = @_;
  178.   local($tmp, $length);
  179.   $tmp = '';
  180.   if ($length = sysread($'socket[$cno], $tmp, $WRITESIZE)) {
  181.     if (unpack('N', $tmp) == $done[$cno]) {
  182.       if ($done[$cno] == $size[$cno]) {
  183.         &'close($cno);
  184.         $dccclientlist = &'remove($dccclientlist, $cno);
  185.         unlink($name[$cno]);
  186.       } else {
  187.         &dcc_send($cno);
  188.       }
  189.     }
  190.   } else {
  191.     &'close($cno);
  192.     $dccclientlist = &'remove($dccclientlist, $cno);
  193.     $reply = &'property($'userno[$server[$cno]], 'senderror');
  194.     &privmsg($server[$cno], $chan[$cno], $reply) if $reply;
  195.     &add_msg($'userno[$server[$cno]], $info[$cno]);
  196.   }
  197. }
  198.  
  199. sub dcc_listen {
  200.   local($lno) = @_;
  201.   local($cno, $size, $tmp);
  202.   if ($cno = &'accept($lno)) {
  203.     $dccclientlist = &'add($dccclientlist, $cno);
  204.     $info[$cno] = $info[$lno];
  205.     $name[$cno] = $name[$lno];
  206.     $size[$cno] = $size[$lno];
  207.     $done[$cno] = $done[$lno];
  208.     $chan[$cno] = $chan[$lno];
  209.     $server[$cno] = $server[$lno];
  210.     $userno[$cno] = $userno[$lno];
  211.     &dcc_send($cno);
  212.     &delete_msg($'userno[$server[$cno]], $info[$cno]);
  213.   }
  214.   &'close($lno);
  215.   $dcclistenlist = &'remove($dcclistenlist, $lno);
  216. }
  217.  
  218. sub dcc_send {
  219.   local($cno) = @_;
  220.   local($size, $tmp, $socket);
  221.   if ($size[$cno] - $done[$cno] < $READSIZE) {
  222.     $size = $size[$cno] - $done[$cno];
  223.   } else {
  224.     $size = $READSIZE;
  225.   }
  226.   if (open(FILE, $name[$cno])) {
  227.     $tmp = '';
  228.     seek(FILE, $done[$cno], 0);
  229.     if (read(FILE, $tmp, $size)) {
  230.       $socket = $'socket[$cno];
  231.       print $socket $tmp;
  232.       $done[$cno] += $size;
  233.     }
  234.     close(FILE);
  235.   }
  236. }
  237.  
  238. sub get {
  239.   local($serverno, $prefix, $chan) = @_;
  240.   local($userno, $nick, @alias, @msg, @data, $user, $lno, $dir, $reply, $size, @params);
  241.   $userno = $'userno[$serverno];
  242.   $nick = &'prefix($prefix);
  243.   @alias = &read_alias($userno);
  244.   @msg = &get_msg($userno, $prefix, @alias);
  245.   if (scalar(@msg)) {
  246.     foreach $line (@msg) {
  247.       @data = split(/\s+/, $line, 8);
  248.       $user = &user_name($data[3], @alias);
  249.       $reply = substr($data[0], index($data[0], '/') + 1) . ' ' . substr($data[1], 0, rindex($data[1], ':')) . ' ' . $user . ' >> ' . $data[7];
  250.       &privmsg($serverno, $nick, $reply);
  251.       $size = (stat($data[6]))[7];
  252.       if ($size && ($lno = &'listen(0, 1))) {
  253.         $dcclistenlist = &'add($dcclistenlist, $lno);
  254.         @params = ();
  255.         push(@params, 'DCC');
  256.         push(@params, 'SEND');
  257.         push(@params, $data[5]);
  258.         push(@params, (unpack($SOCKADDR, getsockname($'socket[$serverno])))[2]);
  259.         push(@params, (unpack($SOCKADDR, getsockname($'socket[$lno])))[1]);
  260.         push(@params, $size);
  261.         &'s_print($serverno, '', 'PRIVMSG', $nick, "\cA" . join(' ', @params) . "\cA");
  262.         $info[$lno] = $line;
  263.         $name[$lno] = $data[6];
  264.         $size[$lno] = $size;
  265.         $done[$lno] = 0;
  266.         if ($chan =~ /^[\#\&\+]/) {
  267.           $chan[$lno] = $chan;
  268.         } else {
  269.           $chan[$lno] = $nick;
  270.         }
  271.         $server[$lno] = $serverno;
  272.         $userno[$lno] = $userno;
  273.       }
  274.     }
  275.   } else {
  276.     $reply = &'property($userno, 'nothing');
  277.     &privmsg($serverno, $nick, $reply) if $reply;
  278.   }
  279. }
  280.  
  281. sub receive {
  282.   local($serverno, $prefix) = @_;
  283.   local($userno, $nick, $time, $recv, @alias, @msg);
  284.   $userno = $'userno[$serverno];
  285.   $nick = &'prefix($prefix);
  286.   @alias = &read_alias($userno);
  287.   @msg = &get_msg($userno, $prefix, @alias);
  288.   if (scalar(@msg)) {
  289.     $time = time();
  290.     $last{$serverno, $nick} = 0 unless $last{$serverno, $nick};
  291.     if ($time - $last{$serverno, $nick} > $FREQUENCY) {
  292.       $recv = &'property($userno, 'receive');
  293.       &privmsg($serverno, $nick, $recv) if $recv;
  294.     }
  295.     $last{$serverno, $nick} = $time;
  296.   } else {
  297.     $last{$serverno, $nick} = 0;
  298.   }
  299. }
  300.  
  301. sub send {
  302.   local($serverno, $prefix, $chan, $to, $text) = @_;
  303.   local($userno, @alias, $reply, $sno, @params, $dir, $name, @arg);
  304.   $userno = $'userno[$serverno];
  305.   @alias = &read_alias($userno);
  306.   if (&check($to, @alias)) {
  307.     foreach $dcc (&'array($dcclist[$serverno])) {
  308.       @arg = split(/\s+/, $dcc, 3);
  309.       next unless $arg[0] eq $prefix;
  310.       @params = split(/\s+/, $arg[2]);
  311.       $sno = &'connect($params[2], $params[3]);
  312.       if ($sno) {
  313.         $dir = &'expand(&'property($userno, 'directory') || $DIRECTORY);
  314.         $name = &newfile($dir, $params[1]);
  315.         $dcclist[$serverno] = &'remove($dcclist[$serverno], $dcc);
  316.         $info[$sno] = join(' ', $to, $prefix, $chan, $params[1], $name, $text);
  317.         $name[$sno] = $name;
  318.         $size[$sno] = $params[4];
  319.         $done[$sno] = 0;
  320.         if ($chan =~ /^[\#\&\+]/) {
  321.           $chan[$sno] = $chan;
  322.         } else {
  323.           $chan[$sno] = &'prefix($prefix);
  324.         }
  325.         $server[$sno] = $serverno;
  326.         $userno[$sno] = $userno;
  327.         $dccserverlist = &'add($dccserverlist, $sno);
  328.         return;
  329.       }
  330.     }
  331.     $reply = &'property($userno, 'norequest');
  332.   } else {
  333.     $reply = &'property($userno, 'unknown');
  334.   }
  335.   if ($reply) {
  336.     if ($chan =~ /^[\#\&\+]/) {
  337.       $to = $chan;
  338.     } else {
  339.       $to = &'prefix($prefix);
  340.     }
  341.     &privmsg($serverno, $to, $reply) if $reply;
  342.   }
  343. }
  344.  
  345. sub newfile {
  346.   local($dir, $file) = @_;
  347.   local($name, $ext);
  348.   $file =~ s/^.*[\\\/]([^\\\/]+)$/$1/;
  349.   $name = "$dir/$file";
  350.   if (-e $name) {
  351.     $ext = '';
  352.     if (rindex($file, '.') > 0) {
  353.       $ext = substr($file, rindex($file, '.'));
  354.       $file = substr($file, 0, rindex($file, '.'));
  355.     }
  356.     $num = 1;
  357.     $name = "$dir/$file-$num$ext";
  358.     while (-e $name) {
  359.       $num++;
  360.       $name = "$dir/$file-$num$ext";
  361.     }
  362.   }
  363.   return $name;
  364. }
  365.  
  366. sub privmsg {
  367.   local($serverno, $to, $msg) = @_;
  368.   &'s_print($serverno, '', 'PRIVMSG', $to, $msg);
  369.   foreach $cno (&'array($'clientlist)) {
  370.     next unless $'avail[$cno];
  371.     next unless $'server[$cno] == $serverno;
  372.     &'c_print($cno, &'user($cno), 'PRIVMSG', $to, $msg);
  373.   }
  374. }
  375.  
  376. sub get_msg {
  377.   local($userno, $prefix, @alias) = @_;
  378.   local(@list, $file, $idx, $name, $code, $line, @data);
  379.   $file = &'property($userno, 'file') || '';
  380.   if (($idx = rindex($file, ';')) != -1) {
  381.     $name = substr($file, 0, $idx);
  382.     $code = substr($file, $idx + 1);
  383.   } else {
  384.     $name = $file;
  385.     $code = '';
  386.   }
  387.   $name = &'expand($name);
  388.   if ($name && open(FILE, $name)) {
  389.     while (defined($line = <FILE>)) {
  390.       $line =~ tr/\r\n//d;
  391.       next unless $line;
  392.       $line = &code_jis($line, $code) if $code;
  393.       @data = split(/\s+/, $line, 6);
  394.       next unless &match($prefix, $data[2], @alias);
  395.       push(@list, $line);
  396.     }
  397.     close(FILE);
  398.   }
  399.   return @list;
  400. }
  401.  
  402. sub add_msg {
  403.   local($userno, $msg) = @_;
  404.   local($file, $name, $code);
  405.   $file = &'property($userno, 'file') || '';
  406.   if (($idx = rindex($file, ';')) != -1) {
  407.     $name = substr($file, 0, $idx);
  408.     $code = substr($file, $idx + 1);
  409.   } else {
  410.     $name = $file;
  411.     $code = '';
  412.   }
  413.   $name = &'expand($name);
  414.   if ($name && open(FILE, ">>$name")) {
  415.     print FILE $msg, "\n";
  416.     close(FILE);
  417.   }
  418. }
  419.  
  420. sub delete_msg {
  421.   local($userno, @list) = @_;
  422.   local($file, $idx, $name, $code, $list, @msg);
  423.   $file = &'property($userno, 'file') || '';
  424.   if (($idx = rindex($file, ';')) != -1) {
  425.     $name = substr($file, 0, $idx);
  426.     $code = substr($file, $idx + 1);
  427.   } else {
  428.     $name = $file;
  429.     $code = '';
  430.   }
  431.   $name = &'expand($name);
  432.   if ($name && open(FILE, $name)) {
  433.     $list = &'list(@list);
  434.     while (defined($line = <FILE>)) {
  435.       $line =~ tr/\r\n//d;
  436.       next unless $line;
  437.       $line = &code_jis($line, $code) if $code;
  438.       next if &'exist($list, $line);
  439.       push(@msg, $line);
  440.     }
  441.     close(FILE);
  442.     if (open(FILE, ">$name")) {
  443.       foreach $line (@msg) {
  444.         $line = &jis_code($line, $code) if $code;
  445.         print FILE $line, "\n";
  446.       }
  447.       close(FILE);
  448.     }
  449.   }
  450. }
  451.  
  452. sub check {
  453.   local($to, @alias) = @_;
  454.   local($i);
  455.   if ($to =~ /^[A-\}][\-\dA-\}]*$/ && length($to) <= 9) {
  456.     return 1;
  457.   } else {
  458.     for ($i = 0; $i < scalar(@alias); $i += 3) {
  459.       foreach $str (&'array($alias[$i + 1] || '')) {
  460.         return 1 if $str eq $to;
  461.       }
  462.     }
  463.     return 0;
  464.   }
  465. }
  466.  
  467. sub user_name {
  468.   local($prefix, @alias) = @_;
  469.   local($regex, $i);
  470.   for ($i = 0; $i < scalar(@alias); $i += 3) {
  471.     foreach $mask (&'array($alias[$i + 2] || '')) {
  472.       $regex = &'regex($mask);
  473.       next unless $prefix =~ /$regex/i;
  474.       return ((&'array($alias[$i + 1] || $alias[$i]))[0]);
  475.     }
  476.   }
  477.   return (&'prefix($prefix))[0];
  478. }
  479.  
  480. sub match {
  481.   local($prefix, $to, @alias) = @_;
  482.   local($i, $regex, $no, $nick);
  483.   for ($i = 0; $i < scalar(@alias); $i += 3) {
  484.     foreach $str (&'array($alias[$i])) {
  485.       next unless "\L$str\E" eq "\L$to\E";
  486.       $no = $i + 2;
  487.       last;
  488.     }
  489.     foreach $str (&'array($alias[$i + 1] || '')) {
  490.       next unless $str eq $to;
  491.       $no = $i + 2;
  492.       last;
  493.     }
  494.   }
  495.   if ($no) {
  496.     foreach $mask (&'array($alias[$no] || '')) {
  497.       $regex = &'regex($mask);
  498.       return 1 if $prefix =~ /$regex/i;
  499.     }
  500.   } else {
  501.     $nick = &'prefix($prefix);
  502.     return 1 if "\L$nick\E" eq "\L$to\E";
  503.   }
  504.   return 0;
  505. }
  506.  
  507. sub read_alias {
  508.   local($userno) = @_;
  509.   local(@alias, $file, $idx, $name, $code, $line, $var, $arg, $no);
  510.   $file = &'property($userno, 'alias') || '';
  511.   if (($idx = rindex($file, ';')) != -1) {
  512.     $name = substr($file, 0, $idx);
  513.     $code = substr($file, $idx + 1);
  514.   } else {
  515.     $name = $file;
  516.     $code = '';
  517.   }
  518.   $name = &'expand($name);
  519.   if ($name && open(FILE, $name)) {
  520.     @alias = ();
  521.     $no = -3;
  522.     while (defined($line = <FILE>)) {
  523.       $line =~ s/^\s+//;
  524.       next if $line =~ /^[\#\;]/;
  525.       $line =~ tr/\r\n//d;
  526.       next unless $line;
  527.       $line =~ s/\s+$//;
  528.       $line = &code_jis($line, $code) if $code;
  529.       $line = &read_line($userno, $line);
  530.       next unless (($var, $arg) = split(/\s*\:\s*/, $line, 2)) == 2;
  531.       if ("\L$var\E" eq 'nick') {
  532.         $no += 3;
  533.         $alias[$no] = &'list(split(/\,/, $arg));
  534.       } elsif ("\L$var\E" eq 'name') {
  535.         $alias[$no + 1] = &'add($alias[$no + 1], split(/\s+/, $arg));
  536.       } elsif ("\L$var\E" eq 'user') {
  537.         $alias[$no + 2] = &'add($alias[$no + 2], $arg);
  538.       }
  539.     }
  540.     close(FILE);
  541.   }
  542.   return @alias;
  543. }
  544.  
  545. sub code_jis {
  546.   local($line, $list) = @_;
  547.   foreach $code (split(/\,/, "\L$list\E")) {
  548.     if ($code eq 'euc') {
  549.       $line = &'euc_jis($line);
  550.     } elsif ($code eq 'jis') {
  551.       $line = &'jis_jis($line);
  552.     } elsif ($code eq 'sjis') {
  553.       $line = &'sjis_jis($line);
  554.     }
  555.   }
  556.   return $line;
  557. }
  558.  
  559. sub jis_code {
  560.   local($line, $list) = @_;
  561.   local($code);
  562.   $code = (split(/\,/, "\L$list\E"))[0];
  563.   if ($code eq 'euc') {
  564.     $line = &'jis_euc($line);
  565.   } elsif ($code eq 'jis') {
  566.     $line = &'jis_jis($line);
  567.   } elsif ($code eq 'sjis') {
  568.     $line = &'jis_sjis($line);
  569.   }
  570.   return $line;
  571. }
  572.  
  573. sub read_line {
  574.   local($userno, $line) = @_;
  575.   foreach $kanji (&'property($userno, 'kanji')) {
  576.     foreach $code (split(/\,/, "\L$kanji\E")) {
  577.       if ($code eq 'euc') {
  578.         $line = &'euc_jis($line);
  579.       } elsif ($code eq 'jis') {
  580.         $line = &'jis_jis($line);
  581.       } elsif ($code eq 'sjis') {
  582.         $line = &'sjis_jis($line);
  583.       }
  584.     }
  585.   }
  586.   return $line;
  587. }
  588.  
  589. __END__
  590. --><HTML><HEAD>
  591. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
  592. <LINK REV="made" HREF="mailto:hasegawa@agusa.nuie.nagoya-u.ac.jp">
  593. <TITLE>auto/package.plm</TITLE></HEAD><BODY>
  594.  
  595. $B%*%s%i%$%s%I%-%e%a%s%H(B
  596.  
  597.  
  598. <HR><H3>$BL>A0(B</H3>
  599.  
  600. auto/package.plm - $B;XDj$7$??M$K(BDCC$B$G%U%!%$%k$rFO$1$k(B
  601.  
  602.  
  603. <HR><H3>$B@bL@(B</H3>
  604.  
  605. $B;XDj$7$??M$K%a%C%;!<%8$r$D$1$F(BDCC$B$G%U%!%$%k$rFO$1$^$9!#(B
  606. DCC$B$G%U%!%$%k$NAw?.MW5a$r=P$7$?$"$H!"(B
  607. $BAw$j@h$r;XDj$9$k$3$H$G%U%!%$%k$rAw?.$9$k$3$H$,$G$-$^$9!#(B
  608. $B%U%!%$%k$,FO$$$F$$$k$+$I$&$+$N3NG'$O%f!<%6$,%A%c%s%M%k$KF~$C$F$-$?$H$-$H!"(B
  609. $B%K%C%/%M!<%`$rJQ99$7$?$H$-$K9T$$$^$9!#(B
  610. $B$=$N$?$a!"F1$8%A%c%s%M%k$KF~$i$J$$%f!<%6$KBP$7$F$O(B
  611. $B%U%!%$%k$rAw$k$3$H$O$G$-$^$;$s!#(B
  612.  
  613.  
  614. <HR><H3>$B%W%m%Q%F%#(B</H3>
  615.  
  616. <DL>
  617. <DT>  auto.package.file $B%U%!%$%kL>(B[;({jis|euc|sjis})]
  618. </DT>
  619. <DD>    $B<u$1<h$C$?%U%!%$%k$dAw$j@h$N>pJs$r3JG<$9$k%U%!%$%k$r;XDj$7$^$9!#(B
  620.         $B%U%!%$%k$O;XDj$7$?4A;z%3!<%I$GJ]B8$5$l$^$9!#(B
  621.         $B4A;z%3!<%I$rJ#?t;XDj$7$?>l9g$O!":G=i$K;XDj$7$?4A;z%3!<%I$G(B
  622.         $BJ]B8$5$l!">JN,$7$?>l9g$O!V(Bjis$B!W$r;XDj$7$?$3$H$HF1$8$G$9!#(B
  623.         $B$^$?!"!V(Beuc$B!W$H!V(Bsjis$B!W$rF1;~$K;XDj$9$k$3$H$O$G$-$^$;$s!#(B
  624. </DD>
  625. <DT>  auto.package.directory $B%G%#%l%/%H%jL>(B
  626. </DT>
  627. <DD>    $B<u$1<h$C$?%U%!%$%k$rJ]B8$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#(B
  628.         $B@5$7$/Aw?.$5$l$?%U%!%$%k$O>C$5$l$^$9!#(B
  629. </DD>
  630. <DT>  auto.package.alias $B%U%!%$%kL>(B[;({jis|euc|sjis})]
  631. </DT>
  632. <DD>    $B%(%$%j%"%9$r;2>H$9$k%U%!%$%kL>$r;XDj$7$^$9!#(B
  633.         $B$3$N%U%!%$%k$O(Bauto/alias.plm$B$G;HMQ$9$k$b$N$HF1$8$b$N$G$9!#(B
  634.         $B%U%!%$%k$O;XDj$7$?4A;z%3!<%I$GJ]B8$5$l$F$$$kI,MW$,$"$j$^$9!#(B
  635. </DD>
  636. <DT>  auto.package.get $BJ8;zNs(B
  637. </DT>
  638. <DD>    $B%U%!%$%k$r<u$1<h$k$?$a$NJ8;zNs$G$9!#(B
  639.         $B$3$3$G;XDj$7$?J8;zNs$rH/8@$9$k$H!"%a%C%;!<%8$H$H$b$K(B
  640.         DCC$B$G%U%!%$%k$,Aw$i$l$F$-$^$9!#(B
  641. </DD>
  642. <DT>  auto.package.send $BJ8;zNs(B
  643. </DT>
  644. <DD>    $B%U%!%$%k$rAw$k$?$a$NJ8;zNs$G$9!#(B
  645. </DD>
  646. <DT>  auto.package.accept $BJ8;zNs(B
  647. </DT>
  648. <DD>    $B%U%!%$%k$r@5$7$/Aw$k$3$H$,$G$-$?$3$H$rCN$i$;$kJ8;zNs$G$9!#(B
  649. </DD>
  650. <DT>  auto.package.receive $BJ8;zNs(B
  651. </DT>
  652. <DD>    $B%U%!%$%k$,FO$$$F$$$k$3$H$rCN$i$;$kJ8;zNs$G$9!#(B
  653.         $B%A%c%s%M%k$KF~$C$F$-$?$H$-$d%K%C%/%M!<%`$rJQ99$7$?$H$-$K!"(B
  654.         $B%U%!%$%k$,FO$$$F$$$l$P$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#(B
  655. </DD>
  656. <DT>  auto.package.norequest $BJ8;zNs(B
  657. </DT>
  658. <DD>    DCC$B$NAw?.MW5a$r=P$5$:$K%U%!%$%k$rAw$m$&$H$7$?>l9g$K(B
  659.         $B$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#(B
  660. </DD>
  661. <DT>  auto.package.unknown $BJ8;zNs(B
  662. </DT>
  663. <DD>    $B%U%!%$%k$NAw$j@h$,$o$+$i$J$$>l9g$KH/8@$9$kJ8;zNs$G$9!#(B
  664. </DD>
  665. <DT>  auto.package.nothing $BJ8;zNs(B
  666. </DT>
  667. <DD>    $B%U%!%$%k$,FO$$$F$$$J$$$K$b$+$+$o$i$:!"(B
  668.         $B%U%!%$%k$N<u?.$rMW5a$7$?>l9g$K$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#(B
  669. </DD>
  670. <DT>  auto.package.geterror $BJ8;zNs(B
  671. </DT>
  672. <DD>    $B%f!<%6$,%U%!%$%k$r<u?.$7$F$$$k$H$-$K%(%i!<$,H/@8$7$?>l9g!"(B
  673.         $B$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#$3$N$H$-$O$b$&0lEYMW5a$7$F(B
  674.         $B<:GT$7$?%U%!%$%k$r<u?.$7D>$7$F2<$5$$!#(B
  675. </DD>
  676. <DT>  auto.package.senderror $BJ8;zNs(B
  677. </DT>
  678. <DD>    $B%f!<%6$,%U%!%$%k$rAw?.$7$F$$$k$H$-$K%(%i!<$,H/@8$7$?>l9g!"(B
  679.         $B$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#(B
  680.         $B$3$N$H$-!"Aw$m$&$H$7$?%U%!%$%k$d%a%C%;!<%8$O$9$Y$FGK4~$5$l$k$N$G!"(B
  681.         $B$b$&0lEYAw$jD>$7$F2<$5$$!#(B
  682. </DD>
  683. </DL>
  684.  
  685.  
  686. <HR><H3>$B@_DjNc(B</H3>
  687.  
  688. <PRE>
  689. + auto.package.plm
  690. auto.package.file: package.txt;jis
  691. auto.package.directory: DCC
  692. auto.package.alias: alias.txt;jis,euc
  693. auto.package.get: $B>.JqAw$C$F(B
  694. auto.package.send: $B>.Jq(B
  695. auto.package.accept: $B>.Jq$r<u$1<h$j$^$7$?(B
  696. auto.package.receive: $B>.Jq$,FO$$$F$$$^$9!#!V>.JqAw$C$F!W$G$*FO$1$7$^$9(B
  697. auto.package.norequest: DCC$BMW5a$,$"$j$^$;$s(B
  698. auto.package.unknown: $B08@h$,$o$+$j$^$;$s(B
  699. auto.package.nothing: $B>.Jq$OFO$$$F$$$^$;$s(B
  700. auto.package.geterror: DCC$B$N<u?.$K<:GT$7$^$7$?(B
  701. auto.package.senderror: DCC$B$NAw?.$K<:GT$7$^$7$?(B
  702. </PRE>
  703.  
  704. DCC$B$G%U%!%$%k$NAw?.MW5a$r=P$7$?$"$H!"!V>.Jq(B pupu $B$[$2$[$2!W(B
  705. $B$N$h$&$KH/8@$9$k$H!"!V$[$2$[$2!W$H$$$&%a%C%;!<%8$H$H$b$K(B
  706. DCC$B$GAw?.$7$?%U%!%$%k$r(Bpupu$B$H$$$&%K%C%/%M!<%`$N?M$KAw$j$^$9!#(B
  707. $B$^$?!V(Balias.txt$B!W$NCf$KE,Ev$J>pJs$r;XDj$9$k$3$H$K$h$C$F!"(B
  708. $B!V>.Jq(B $B$W$W(B $B$[$2$[$2!W$N$h$&$J;H$$J}$b$G$-$^$9!#(B
  709. $B$^$?!"$3$N$H$-Aw$i$l$?%U%!%$%k$O(BDCC$B$H$$$&%G%#%l%/%H%j$NCf$KJ]B8$5$l$^$9!#(B
  710.  
  711. <BR><BR>
  712.  
  713. $B%U%!%$%k$,FO$$$F$$$k$H$-$K%A%c%s%M%k$KF~$C$?$j!"%K%C%/%M!<%`$rJQ99$9$k$H!"(B
  714. $B!V>.Jq$,FO$$$F$$$^$9!#!V>.JqAw$C$F!W$G$*FO$1$7$^$9!W$H8@$C$FCN$i$;$^$9!#(B
  715. $B$3$N$H$-!V>.JqAw$C$F!W$HH/8@$9$k$H!"Aw$j<g$NL>A0$H%a%C%;!<%8$rH/8@$7$F!"(B
  716. DCC$B$G%U%!%$%k$rAw$C$F$-$^$9!#(B
  717.  
  718. </BODY></HTML>
  719.