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 >
Wrap
Text File
|
1998-10-15
|
21KB
|
719 lines
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
# $Id: package.plm,v 2.25 1998/10/13 14:05:46 hasegawa Exp $
# copyright (c)1998 pupu_j <hasegawa@agusa.nuie.nagoya-u.ac.jp>
package auto_package;
$READSIZE = 4096;
$WRITESIZE = 4;
$DIRECTORY = '.';
$CLIENTINFO = 'DCC';
$SOCKADDR = 'S n N x8';
$TIMEOUT = 3600;
$FREQUENCY = 3600;
$_ = 'auto_package';
sub main_loop {
local($userno) = @_;
foreach $sno (&'array($dccserverlist)) {
if (vec($'rout, $sno, 1)) {
&dcc_server($sno);
vec($'rout, $sno, 1) = 0;
} elsif (time() - $'access[$sno] > $TIMEOUT) {
&'close($sno);
$dccserverlist = &'remove($dccserverlist, $sno);
$reply = &'property($'userno[$server[$sno]], 'geterror');
&privmsg($server[$sno], $chan[$sno], $reply) if $reply;
}
}
foreach $cno (&'array($dccclientlist)) {
if (vec($'rout, $cno, 1)) {
&dcc_client($cno);
vec($'rout, $cno, 1) = 0;
} elsif (time() - $'access[$cno] > $TIMEOUT) {
&'close($cno);
$dccclientlist = &'remove($dccclientlist, $cno);
$reply = &'property($'userno[$server[$cno]], 'senderror');
&privmsg($server[$cno], $chan[$cno], $reply) if $reply;
&add_msg($userno, $info[$cno]);
}
}
foreach $lno (&'array($dcclistenlist)) {
if (vec($'rout, $lno, 1)) {
&dcc_listen($lno);
vec($'rout, $lno, 1) = 0;
} elsif (time() - $'access[$lno] > $TIMEOUT) {
&'close($lno);
$dcclistenlist = &'remove($dcclistenlist, $lno);
$reply = &'property($'userno[$server[$cno]], 'senderror');
&privmsg($server[$cno], $chan[$cno], $reply) if $reply;
&add_msg($userno, $info[$lno]);
}
}
}
sub ss_join {
local($serverno, $prefix, $cmd, @params) = @_;
&receive($serverno, $prefix);
return ($prefix, $cmd, @params);
}
sub ss_nick {
local($serverno, $prefix, $cmd, @params) = @_;
local($nick);
$nick = &'prefix($prefix);
$last{$serverno, $params[0]} = $last{$serverno, $nick};
delete($last{$serverno, $nick});
$user = $params[0] . substr($prefix, index($prefix, '!'));
&receive($serverno, $user);
return ($prefix, $cmd, @params);
}
sub ss_part {
local($serverno, $prefix, $cmd, @params) = @_;
&receive($serverno, $prefix);
return ($prefix, $cmd, @params);
}
sub ss_topic {
local($serverno, $prefix, $cmd, @params) = @_;
&receive($serverno, $prefix);
return ($prefix, $cmd, @params);
}
sub ss_kick {
local($serverno, $prefix, $cmd, @params) = @_;
&receive($serverno, $prefix);
return ($prefix, $cmd, @params);
}
sub ss_mode {
local($serverno, $prefix, $cmd, @params) = @_;
&receive($serverno, $prefix);
return ($prefix, $cmd, @params);
}
sub ss_privmsg {
local($serverno, $prefix, $cmd, @params) = @_;
local($userno, $str, $to, $text, $reply, $who);
$userno = $'userno[$serverno];
&receive($serverno, $prefix);
if ($params[1]) {
foreach $get (&'property($userno, 'get')) {
next unless $params[1] eq $get;
&get($serverno, $prefix, $params[0]);
return ($prefix, $cmd, @params);
}
($str, $to, $text) = split(/\s+/, $params[1], 3);
if ($text) {
foreach $send (&'property($userno, 'send')) {
next unless $str eq $send;
&send($serverno, $prefix, $params[0], $to, $text);
return ($prefix, $cmd, @params);
}
}
}
return ($prefix, $cmd, @params);
}
sub cpss_dcc {
local($serverno, $prefix, $cmd, @params) = @_;
local(@msg, $dir, $name, $sno, $from);
@msg = split(/\s+/, $params[1]);
if ("\L$msg[0]\E" eq 'send') {
foreach $dcc (&'array($dcclist[$serverno])) {
$from = (split(/\s+/, $dcc))[0];
next if $from ne $prefix;
$dcclist[$serverno] = &'remove($dcclist[$serverno], $dcc);
}
$dcclist[$serverno] = &'add($dcclist[$serverno], join(' ', $prefix, @params));
}
return ($prefix, $cmd, @params);
}
sub dcc_server {
local($sno) = @_;
local($socket, $tmp, $size, $length, $idx, $line, $reply, $chan, $who);
if ($size[$sno] - $done[$sno] > $READSIZE) {
$size = $size[$sno] - $done[$sno];
} else {
$size = $READSIZE;
}
$tmp = '';
$socket = $'socket[$sno];
if ($length = sysread($socket, $tmp, $size)) {
if (open(FILE, ">>$name[$sno]")) {
select((select(FILE), $| = 1)[0]);
print FILE $tmp;
close(FILE);
}
$done[$sno] += $length;
print $socket pack('N', $done[$sno]);
if ($done[$sno] == $size[$sno]) {
&'close($sno);
$dccserverlist = &'remove($dccserverlist, $sno);
$line = join(' ', &'date('%Y/%m/%d %H:%M:%S'), $info[$sno]);
$line = &jis_code($line, $code) if $code;
&add_msg($userno, $line);
$reply = &'property($'userno[$server[$sno]], 'accept');
$chan = (split(/\s+/, $info[$sno]))[2];
if ($chan =~ /^[\#\&\+]/) {
$who = $chan;
} else {
$who = &'prefix((split(/\s+/, $info[$sno]))[1]);
}
&privmsg($server[$sno], $who, $reply) if $reply;
}
} else {
&'close($sno);
$dccserverlist = &'remove($dccserverlist, $sno);
$reply = &'property($'userno[$server[$sno]], 'geterror');
&privmsg($server[$sno], $chan[$sno], $reply) if $reply;
}
}
sub dcc_client {
local($cno) = @_;
local($tmp, $length);
$tmp = '';
if ($length = sysread($'socket[$cno], $tmp, $WRITESIZE)) {
if (unpack('N', $tmp) == $done[$cno]) {
if ($done[$cno] == $size[$cno]) {
&'close($cno);
$dccclientlist = &'remove($dccclientlist, $cno);
unlink($name[$cno]);
} else {
&dcc_send($cno);
}
}
} else {
&'close($cno);
$dccclientlist = &'remove($dccclientlist, $cno);
$reply = &'property($'userno[$server[$cno]], 'senderror');
&privmsg($server[$cno], $chan[$cno], $reply) if $reply;
&add_msg($'userno[$server[$cno]], $info[$cno]);
}
}
sub dcc_listen {
local($lno) = @_;
local($cno, $size, $tmp);
if ($cno = &'accept($lno)) {
$dccclientlist = &'add($dccclientlist, $cno);
$info[$cno] = $info[$lno];
$name[$cno] = $name[$lno];
$size[$cno] = $size[$lno];
$done[$cno] = $done[$lno];
$chan[$cno] = $chan[$lno];
$server[$cno] = $server[$lno];
$userno[$cno] = $userno[$lno];
&dcc_send($cno);
&delete_msg($'userno[$server[$cno]], $info[$cno]);
}
&'close($lno);
$dcclistenlist = &'remove($dcclistenlist, $lno);
}
sub dcc_send {
local($cno) = @_;
local($size, $tmp, $socket);
if ($size[$cno] - $done[$cno] < $READSIZE) {
$size = $size[$cno] - $done[$cno];
} else {
$size = $READSIZE;
}
if (open(FILE, $name[$cno])) {
$tmp = '';
seek(FILE, $done[$cno], 0);
if (read(FILE, $tmp, $size)) {
$socket = $'socket[$cno];
print $socket $tmp;
$done[$cno] += $size;
}
close(FILE);
}
}
sub get {
local($serverno, $prefix, $chan) = @_;
local($userno, $nick, @alias, @msg, @data, $user, $lno, $dir, $reply, $size, @params);
$userno = $'userno[$serverno];
$nick = &'prefix($prefix);
@alias = &read_alias($userno);
@msg = &get_msg($userno, $prefix, @alias);
if (scalar(@msg)) {
foreach $line (@msg) {
@data = split(/\s+/, $line, 8);
$user = &user_name($data[3], @alias);
$reply = substr($data[0], index($data[0], '/') + 1) . ' ' . substr($data[1], 0, rindex($data[1], ':')) . ' ' . $user . ' >> ' . $data[7];
&privmsg($serverno, $nick, $reply);
$size = (stat($data[6]))[7];
if ($size && ($lno = &'listen(0, 1))) {
$dcclistenlist = &'add($dcclistenlist, $lno);
@params = ();
push(@params, 'DCC');
push(@params, 'SEND');
push(@params, $data[5]);
push(@params, (unpack($SOCKADDR, getsockname($'socket[$serverno])))[2]);
push(@params, (unpack($SOCKADDR, getsockname($'socket[$lno])))[1]);
push(@params, $size);
&'s_print($serverno, '', 'PRIVMSG', $nick, "\cA" . join(' ', @params) . "\cA");
$info[$lno] = $line;
$name[$lno] = $data[6];
$size[$lno] = $size;
$done[$lno] = 0;
if ($chan =~ /^[\#\&\+]/) {
$chan[$lno] = $chan;
} else {
$chan[$lno] = $nick;
}
$server[$lno] = $serverno;
$userno[$lno] = $userno;
}
}
} else {
$reply = &'property($userno, 'nothing');
&privmsg($serverno, $nick, $reply) if $reply;
}
}
sub receive {
local($serverno, $prefix) = @_;
local($userno, $nick, $time, $recv, @alias, @msg);
$userno = $'userno[$serverno];
$nick = &'prefix($prefix);
@alias = &read_alias($userno);
@msg = &get_msg($userno, $prefix, @alias);
if (scalar(@msg)) {
$time = time();
$last{$serverno, $nick} = 0 unless $last{$serverno, $nick};
if ($time - $last{$serverno, $nick} > $FREQUENCY) {
$recv = &'property($userno, 'receive');
&privmsg($serverno, $nick, $recv) if $recv;
}
$last{$serverno, $nick} = $time;
} else {
$last{$serverno, $nick} = 0;
}
}
sub send {
local($serverno, $prefix, $chan, $to, $text) = @_;
local($userno, @alias, $reply, $sno, @params, $dir, $name, @arg);
$userno = $'userno[$serverno];
@alias = &read_alias($userno);
if (&check($to, @alias)) {
foreach $dcc (&'array($dcclist[$serverno])) {
@arg = split(/\s+/, $dcc, 3);
next unless $arg[0] eq $prefix;
@params = split(/\s+/, $arg[2]);
$sno = &'connect($params[2], $params[3]);
if ($sno) {
$dir = &'expand(&'property($userno, 'directory') || $DIRECTORY);
$name = &newfile($dir, $params[1]);
$dcclist[$serverno] = &'remove($dcclist[$serverno], $dcc);
$info[$sno] = join(' ', $to, $prefix, $chan, $params[1], $name, $text);
$name[$sno] = $name;
$size[$sno] = $params[4];
$done[$sno] = 0;
if ($chan =~ /^[\#\&\+]/) {
$chan[$sno] = $chan;
} else {
$chan[$sno] = &'prefix($prefix);
}
$server[$sno] = $serverno;
$userno[$sno] = $userno;
$dccserverlist = &'add($dccserverlist, $sno);
return;
}
}
$reply = &'property($userno, 'norequest');
} else {
$reply = &'property($userno, 'unknown');
}
if ($reply) {
if ($chan =~ /^[\#\&\+]/) {
$to = $chan;
} else {
$to = &'prefix($prefix);
}
&privmsg($serverno, $to, $reply) if $reply;
}
}
sub newfile {
local($dir, $file) = @_;
local($name, $ext);
$file =~ s/^.*[\\\/]([^\\\/]+)$/$1/;
$name = "$dir/$file";
if (-e $name) {
$ext = '';
if (rindex($file, '.') > 0) {
$ext = substr($file, rindex($file, '.'));
$file = substr($file, 0, rindex($file, '.'));
}
$num = 1;
$name = "$dir/$file-$num$ext";
while (-e $name) {
$num++;
$name = "$dir/$file-$num$ext";
}
}
return $name;
}
sub privmsg {
local($serverno, $to, $msg) = @_;
&'s_print($serverno, '', 'PRIVMSG', $to, $msg);
foreach $cno (&'array($'clientlist)) {
next unless $'avail[$cno];
next unless $'server[$cno] == $serverno;
&'c_print($cno, &'user($cno), 'PRIVMSG', $to, $msg);
}
}
sub get_msg {
local($userno, $prefix, @alias) = @_;
local(@list, $file, $idx, $name, $code, $line, @data);
$file = &'property($userno, 'file') || '';
if (($idx = rindex($file, ';')) != -1) {
$name = substr($file, 0, $idx);
$code = substr($file, $idx + 1);
} else {
$name = $file;
$code = '';
}
$name = &'expand($name);
if ($name && open(FILE, $name)) {
while (defined($line = <FILE>)) {
$line =~ tr/\r\n//d;
next unless $line;
$line = &code_jis($line, $code) if $code;
@data = split(/\s+/, $line, 6);
next unless &match($prefix, $data[2], @alias);
push(@list, $line);
}
close(FILE);
}
return @list;
}
sub add_msg {
local($userno, $msg) = @_;
local($file, $name, $code);
$file = &'property($userno, 'file') || '';
if (($idx = rindex($file, ';')) != -1) {
$name = substr($file, 0, $idx);
$code = substr($file, $idx + 1);
} else {
$name = $file;
$code = '';
}
$name = &'expand($name);
if ($name && open(FILE, ">>$name")) {
print FILE $msg, "\n";
close(FILE);
}
}
sub delete_msg {
local($userno, @list) = @_;
local($file, $idx, $name, $code, $list, @msg);
$file = &'property($userno, 'file') || '';
if (($idx = rindex($file, ';')) != -1) {
$name = substr($file, 0, $idx);
$code = substr($file, $idx + 1);
} else {
$name = $file;
$code = '';
}
$name = &'expand($name);
if ($name && open(FILE, $name)) {
$list = &'list(@list);
while (defined($line = <FILE>)) {
$line =~ tr/\r\n//d;
next unless $line;
$line = &code_jis($line, $code) if $code;
next if &'exist($list, $line);
push(@msg, $line);
}
close(FILE);
if (open(FILE, ">$name")) {
foreach $line (@msg) {
$line = &jis_code($line, $code) if $code;
print FILE $line, "\n";
}
close(FILE);
}
}
}
sub check {
local($to, @alias) = @_;
local($i);
if ($to =~ /^[A-\}][\-\dA-\}]*$/ && length($to) <= 9) {
return 1;
} else {
for ($i = 0; $i < scalar(@alias); $i += 3) {
foreach $str (&'array($alias[$i + 1] || '')) {
return 1 if $str eq $to;
}
}
return 0;
}
}
sub user_name {
local($prefix, @alias) = @_;
local($regex, $i);
for ($i = 0; $i < scalar(@alias); $i += 3) {
foreach $mask (&'array($alias[$i + 2] || '')) {
$regex = &'regex($mask);
next unless $prefix =~ /$regex/i;
return ((&'array($alias[$i + 1] || $alias[$i]))[0]);
}
}
return (&'prefix($prefix))[0];
}
sub match {
local($prefix, $to, @alias) = @_;
local($i, $regex, $no, $nick);
for ($i = 0; $i < scalar(@alias); $i += 3) {
foreach $str (&'array($alias[$i])) {
next unless "\L$str\E" eq "\L$to\E";
$no = $i + 2;
last;
}
foreach $str (&'array($alias[$i + 1] || '')) {
next unless $str eq $to;
$no = $i + 2;
last;
}
}
if ($no) {
foreach $mask (&'array($alias[$no] || '')) {
$regex = &'regex($mask);
return 1 if $prefix =~ /$regex/i;
}
} else {
$nick = &'prefix($prefix);
return 1 if "\L$nick\E" eq "\L$to\E";
}
return 0;
}
sub read_alias {
local($userno) = @_;
local(@alias, $file, $idx, $name, $code, $line, $var, $arg, $no);
$file = &'property($userno, 'alias') || '';
if (($idx = rindex($file, ';')) != -1) {
$name = substr($file, 0, $idx);
$code = substr($file, $idx + 1);
} else {
$name = $file;
$code = '';
}
$name = &'expand($name);
if ($name && open(FILE, $name)) {
@alias = ();
$no = -3;
while (defined($line = <FILE>)) {
$line =~ s/^\s+//;
next if $line =~ /^[\#\;]/;
$line =~ tr/\r\n//d;
next unless $line;
$line =~ s/\s+$//;
$line = &code_jis($line, $code) if $code;
$line = &read_line($userno, $line);
next unless (($var, $arg) = split(/\s*\:\s*/, $line, 2)) == 2;
if ("\L$var\E" eq 'nick') {
$no += 3;
$alias[$no] = &'list(split(/\,/, $arg));
} elsif ("\L$var\E" eq 'name') {
$alias[$no + 1] = &'add($alias[$no + 1], split(/\s+/, $arg));
} elsif ("\L$var\E" eq 'user') {
$alias[$no + 2] = &'add($alias[$no + 2], $arg);
}
}
close(FILE);
}
return @alias;
}
sub code_jis {
local($line, $list) = @_;
foreach $code (split(/\,/, "\L$list\E")) {
if ($code eq 'euc') {
$line = &'euc_jis($line);
} elsif ($code eq 'jis') {
$line = &'jis_jis($line);
} elsif ($code eq 'sjis') {
$line = &'sjis_jis($line);
}
}
return $line;
}
sub jis_code {
local($line, $list) = @_;
local($code);
$code = (split(/\,/, "\L$list\E"))[0];
if ($code eq 'euc') {
$line = &'jis_euc($line);
} elsif ($code eq 'jis') {
$line = &'jis_jis($line);
} elsif ($code eq 'sjis') {
$line = &'jis_sjis($line);
}
return $line;
}
sub read_line {
local($userno, $line) = @_;
foreach $kanji (&'property($userno, 'kanji')) {
foreach $code (split(/\,/, "\L$kanji\E")) {
if ($code eq 'euc') {
$line = &'euc_jis($line);
} elsif ($code eq 'jis') {
$line = &'jis_jis($line);
} elsif ($code eq 'sjis') {
$line = &'sjis_jis($line);
}
}
}
return $line;
}
__END__
--><HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
<LINK REV="made" HREF="mailto:hasegawa@agusa.nuie.nagoya-u.ac.jp">
<TITLE>auto/package.plm</TITLE></HEAD><BODY>
$B%*%s%i%$%s%I%-%e%a%s%H(B
<HR><H3>$BL>A0(B</H3>
auto/package.plm - $B;XDj$7$??M$K(BDCC$B$G%U%!%$%k$rFO$1$k(B
<HR><H3>$B@bL@(B</H3>
$B;XDj$7$??M$K%a%C%;!<%8$r$D$1$F(BDCC$B$G%U%!%$%k$rFO$1$^$9!#(B
DCC$B$G%U%!%$%k$NAw?.MW5a$r=P$7$?$"$H!"(B
$BAw$j@h$r;XDj$9$k$3$H$G%U%!%$%k$rAw?.$9$k$3$H$,$G$-$^$9!#(B
$B%U%!%$%k$,FO$$$F$$$k$+$I$&$+$N3NG'$O%f!<%6$,%A%c%s%M%k$KF~$C$F$-$?$H$-$H!"(B
$B%K%C%/%M!<%`$rJQ99$7$?$H$-$K9T$$$^$9!#(B
$B$=$N$?$a!"F1$8%A%c%s%M%k$KF~$i$J$$%f!<%6$KBP$7$F$O(B
$B%U%!%$%k$rAw$k$3$H$O$G$-$^$;$s!#(B
<HR><H3>$B%W%m%Q%F%#(B</H3>
<DL>
<DT> auto.package.file $B%U%!%$%kL>(B[;({jis|euc|sjis})]
</DT>
<DD> $B<u$1<h$C$?%U%!%$%k$dAw$j@h$N>pJs$r3JG<$9$k%U%!%$%k$r;XDj$7$^$9!#(B
$B%U%!%$%k$O;XDj$7$?4A;z%3!<%I$GJ]B8$5$l$^$9!#(B
$B4A;z%3!<%I$rJ#?t;XDj$7$?>l9g$O!":G=i$K;XDj$7$?4A;z%3!<%I$G(B
$BJ]B8$5$l!">JN,$7$?>l9g$O!V(Bjis$B!W$r;XDj$7$?$3$H$HF1$8$G$9!#(B
$B$^$?!"!V(Beuc$B!W$H!V(Bsjis$B!W$rF1;~$K;XDj$9$k$3$H$O$G$-$^$;$s!#(B
</DD>
<DT> auto.package.directory $B%G%#%l%/%H%jL>(B
</DT>
<DD> $B<u$1<h$C$?%U%!%$%k$rJ]B8$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#(B
$B@5$7$/Aw?.$5$l$?%U%!%$%k$O>C$5$l$^$9!#(B
</DD>
<DT> auto.package.alias $B%U%!%$%kL>(B[;({jis|euc|sjis})]
</DT>
<DD> $B%(%$%j%"%9$r;2>H$9$k%U%!%$%kL>$r;XDj$7$^$9!#(B
$B$3$N%U%!%$%k$O(Bauto/alias.plm$B$G;HMQ$9$k$b$N$HF1$8$b$N$G$9!#(B
$B%U%!%$%k$O;XDj$7$?4A;z%3!<%I$GJ]B8$5$l$F$$$kI,MW$,$"$j$^$9!#(B
</DD>
<DT> auto.package.get $BJ8;zNs(B
</DT>
<DD> $B%U%!%$%k$r<u$1<h$k$?$a$NJ8;zNs$G$9!#(B
$B$3$3$G;XDj$7$?J8;zNs$rH/8@$9$k$H!"%a%C%;!<%8$H$H$b$K(B
DCC$B$G%U%!%$%k$,Aw$i$l$F$-$^$9!#(B
</DD>
<DT> auto.package.send $BJ8;zNs(B
</DT>
<DD> $B%U%!%$%k$rAw$k$?$a$NJ8;zNs$G$9!#(B
</DD>
<DT> auto.package.accept $BJ8;zNs(B
</DT>
<DD> $B%U%!%$%k$r@5$7$/Aw$k$3$H$,$G$-$?$3$H$rCN$i$;$kJ8;zNs$G$9!#(B
</DD>
<DT> auto.package.receive $BJ8;zNs(B
</DT>
<DD> $B%U%!%$%k$,FO$$$F$$$k$3$H$rCN$i$;$kJ8;zNs$G$9!#(B
$B%A%c%s%M%k$KF~$C$F$-$?$H$-$d%K%C%/%M!<%`$rJQ99$7$?$H$-$K!"(B
$B%U%!%$%k$,FO$$$F$$$l$P$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#(B
</DD>
<DT> auto.package.norequest $BJ8;zNs(B
</DT>
<DD> DCC$B$NAw?.MW5a$r=P$5$:$K%U%!%$%k$rAw$m$&$H$7$?>l9g$K(B
$B$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#(B
</DD>
<DT> auto.package.unknown $BJ8;zNs(B
</DT>
<DD> $B%U%!%$%k$NAw$j@h$,$o$+$i$J$$>l9g$KH/8@$9$kJ8;zNs$G$9!#(B
</DD>
<DT> auto.package.nothing $BJ8;zNs(B
</DT>
<DD> $B%U%!%$%k$,FO$$$F$$$J$$$K$b$+$+$o$i$:!"(B
$B%U%!%$%k$N<u?.$rMW5a$7$?>l9g$K$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#(B
</DD>
<DT> auto.package.geterror $BJ8;zNs(B
</DT>
<DD> $B%f!<%6$,%U%!%$%k$r<u?.$7$F$$$k$H$-$K%(%i!<$,H/@8$7$?>l9g!"(B
$B$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#$3$N$H$-$O$b$&0lEYMW5a$7$F(B
$B<:GT$7$?%U%!%$%k$r<u?.$7D>$7$F2<$5$$!#(B
</DD>
<DT> auto.package.senderror $BJ8;zNs(B
</DT>
<DD> $B%f!<%6$,%U%!%$%k$rAw?.$7$F$$$k$H$-$K%(%i!<$,H/@8$7$?>l9g!"(B
$B$3$3$G;XDj$7$?J8;zNs$rH/8@$7$^$9!#(B
$B$3$N$H$-!"Aw$m$&$H$7$?%U%!%$%k$d%a%C%;!<%8$O$9$Y$FGK4~$5$l$k$N$G!"(B
$B$b$&0lEYAw$jD>$7$F2<$5$$!#(B
</DD>
</DL>
<HR><H3>$B@_DjNc(B</H3>
<PRE>
+ auto.package.plm
auto.package.file: package.txt;jis
auto.package.directory: DCC
auto.package.alias: alias.txt;jis,euc
auto.package.get: $B>.JqAw$C$F(B
auto.package.send: $B>.Jq(B
auto.package.accept: $B>.Jq$r<u$1<h$j$^$7$?(B
auto.package.receive: $B>.Jq$,FO$$$F$$$^$9!#!V>.JqAw$C$F!W$G$*FO$1$7$^$9(B
auto.package.norequest: DCC$BMW5a$,$"$j$^$;$s(B
auto.package.unknown: $B08@h$,$o$+$j$^$;$s(B
auto.package.nothing: $B>.Jq$OFO$$$F$$$^$;$s(B
auto.package.geterror: DCC$B$N<u?.$K<:GT$7$^$7$?(B
auto.package.senderror: DCC$B$NAw?.$K<:GT$7$^$7$?(B
</PRE>
DCC$B$G%U%!%$%k$NAw?.MW5a$r=P$7$?$"$H!"!V>.Jq(B pupu $B$[$2$[$2!W(B
$B$N$h$&$KH/8@$9$k$H!"!V$[$2$[$2!W$H$$$&%a%C%;!<%8$H$H$b$K(B
DCC$B$GAw?.$7$?%U%!%$%k$r(Bpupu$B$H$$$&%K%C%/%M!<%`$N?M$KAw$j$^$9!#(B
$B$^$?!V(Balias.txt$B!W$NCf$KE,Ev$J>pJs$r;XDj$9$k$3$H$K$h$C$F!"(B
$B!V>.Jq(B $B$W$W(B $B$[$2$[$2!W$N$h$&$J;H$$J}$b$G$-$^$9!#(B
$B$^$?!"$3$N$H$-Aw$i$l$?%U%!%$%k$O(BDCC$B$H$$$&%G%#%l%/%H%j$NCf$KJ]B8$5$l$^$9!#(B
<BR><BR>
$B%U%!%$%k$,FO$$$F$$$k$H$-$K%A%c%s%M%k$KF~$C$?$j!"%K%C%/%M!<%`$rJQ99$9$k$H!"(B
$B!V>.Jq$,FO$$$F$$$^$9!#!V>.JqAw$C$F!W$G$*FO$1$7$^$9!W$H8@$C$FCN$i$;$^$9!#(B
$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
DCC$B$G%U%!%$%k$rAw$C$F$-$^$9!#(B
</BODY></HTML>