home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.madoka.org
/
2014.12.ftp.madoka.org.tar
/
ftp.madoka.org
/
pub
/
plum
/
plum2_33_1.lzh
/
module
/
auto
/
package.plm
< prev
next >
Wrap
Text File
|
1999-03-24
|
29KB
|
954 lines
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
# $Id: package.plm,v 2.75 1999/02/10 06:57:52 hasegawa Exp $
# copyright (c)1998-1999 Yoshinori Hasegawa <hasegawa@madoka.org>
package auto_package;
$SENDSIZE = 65536;
$RECVSIZE = 65536;
$DIRECTORY = '.';
$CLIENTINFO = 'DCC';
$TIMEOUT = 3600;
$INTERVAL = 3600;
$DATE = '%m/%d %H:%M';
$FORMAT = '#(date) #(from.name|from.nick|from.nick.now) >> #(message)';
$_ = 'auto_package';
sub main_loop {
local($userno) = @_;
local($timeout);
$timeout = &'property($userno, 'timeout') || $TIMEOUT;
foreach $sno (&'array($dccserverlist)) {
next unless $'userno[$server[$sno]] == $userno;
if (vec($'rout, $sno, 1)) {
&dcc_server($sno);
vec($'rout, $sno, 1) = 0;
} elsif (time() - $'access[$sno] > $timeout) {
&'close($sno);
$dccserverlist = &'remove($dccserverlist, $sno);
&msg_send($sno, 'senderror');
unlink($name[$sno]);
}
}
foreach $cno (&'array($dccclientlist)) {
next unless $'userno[$server[$cno]] == $userno;
if (vec($'rout, $cno, 1)) {
&dcc_client($cno);
vec($'rout, $cno, 1) = 0;
} elsif (time() - $'access[$cno] > $timeout) {
&'close($cno);
$dccclientlist = &'remove($dccclientlist, $cno);
&add_msg($'userno[$server[$cno]], $info[$cno]);
&msg_get($cno, 'geterror');
}
}
foreach $lno (&'array($dcclistenlist)) {
next unless $'userno[$server[$lno]] == $userno;
if (vec($'rout, $lno, 1)) {
&dcc_listen($lno);
vec($'rout, $lno, 1) = 0;
} elsif (time() - $'access[$lno] > $timeout) {
&'close($lno);
$dcclistenlist = &'remove($dcclistenlist, $lno);
&add_msg($'userno[$server[$lno]], $info[$lno]);
&msg_get($lno, 'geterror');
}
}
}
sub module_disable {
local($userno) = @_;
local($no, $nick);
foreach $sno (&'array($dccserverlist)) {
&'close($sno);
$dccserverlist = &'remove($dccserverlist, $sno);
}
foreach $cno (&'array($dccclientlist)) {
&'close($cno);
$dccclientlist = &'remove($dccclientlist, $cno);
&add_msg($userno, $info[$cno]);
}
foreach $lno (&'array($dcclistenlist)) {
&'close($lno);
$dcclistenlist = &'remove($dcclistenlist, $lno);
&add_msg($userno, $info[$lno]);
}
foreach $key (keys(%lasttime)) {
($no, $nick) = split(/$;/, $key, 2);
next unless $'userno[$no] == $userno;
delete $lasttime{$key};
}
}
sub server_close {
local($serverno) = @_;
local($no, $nick);
$dcclist[$serverno] = '';
foreach $key (keys(%lasttime)) {
($no, $nick) = split(/$;/, $key, 2);
next unless $no == $serverno;
delete $lasttime{$key};
}
}
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);
$lasttime{$serverno, $params[0]} = $lasttime{$serverno, $nick};
delete $lasttime{$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, $who, $text);
$userno = $'userno[$serverno];
if ($params[1]) {
foreach $get (&'property($userno, 'get')) {
next unless $params[1] eq $get;
&get($serverno, $prefix, $params[0]);
return ($prefix, $cmd, @params);
}
foreach $check (&'property($userno, 'check')) {
next unless $params[1] eq $check;
&check($serverno, $prefix, $params[0]);
return ($prefix, $cmd, @params);
}
($str, $who, $text) = split(/\s+/, $params[1], 3);
if ($text) {
foreach $send (&'property($userno, 'send')) {
next unless $str eq $send;
&send($serverno, $prefix, $params[0], $who, $text);
return ($prefix, $cmd, @params);
}
}
}
&receive($serverno, $prefix);
return ($prefix, $cmd, @params);
}
sub cpss_dcc {
local($serverno, $prefix, $cmd, @params) = @_;
local(@msg, $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($recv, $socket, $tmp, $size, $length);
$recv = &'property($'userno[$server[$sno]], 'recvsize') || $RECVSIZE;
if ($size[$sno] - $done[$sno] > $recv) {
$size = $size[$sno] - $done[$sno];
} else {
$size = $recv;
}
$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);
&add_msg($'userno[$server[$sno]], $info[$sno]);
&msg_send($sno, 'accept');
}
} else {
&'close($sno);
$dccserverlist = &'remove($dccserverlist, $sno);
&msg_send($sno, 'senderror');
unlink($name[$sno]);
}
}
sub dcc_client {
local($cno) = @_;
local($tmp, $length);
$tmp = '';
if ($length = sysread($'socket[$cno], $tmp, 4)) {
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);
&add_msg($'userno[$server[$cno]], $info[$cno]);
&msg_get($cno, 'geterror');
}
}
sub dcc_listen {
local($lno) = @_;
local($cno);
if ($cno = &'accept($lno)) {
$dccclientlist = &'add($dccclientlist, $cno);
$info[$cno] = $info[$lno];
$name[$cno] = $name[$lno];
$size[$cno] = $size[$lno];
$done[$cno] = $done[$lno];
$pref[$cno] = $pref[$lno];
$chan[$cno] = $chan[$lno];
$server[$cno] = $server[$lno];
&dcc_send($cno);
&delete_msg($'userno[$server[$cno]], $info[$cno]);
}
&'close($lno);
$dcclistenlist = &'remove($dcclistenlist, $lno);
}
sub dcc_send {
local($cno) = @_;
local($send, $size, $tmp, $socket);
$send = &'property($'userno[$server[$cno]], 'sendsize') || $SENDSIZE;
if ($size[$cno] - $done[$cno] < $send) {
$size = $size[$cno] - $done[$cno];
} else {
$size = $send;
}
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 receive {
local($serverno, $prefix) = @_;
local($userno, $nick, $time, $int, @msg, %alias);
$userno = $'userno[$serverno];
$nick = &'prefix($prefix);
@msg = &get_msg($userno, $prefix);
if (@msg) {
%alias = &get_alias_user($userno, $prefix);
$alias{'nick.now'} = $nick;
$time = time();
$alias{'number'} = @msg;
$lasttime{$serverno, $nick} = 0 unless $lasttime{$serverno, $nick};
$int = &'property($userno, 'interval') || $INTERVAL;
if ($time - $lasttime{$serverno, $nick} > $int) {
foreach $reply (&'property($userno, 'receive')) {
&privmsg($serverno, $nick, &'format($reply, %alias));
}
}
$lasttime{$serverno, $nick} = $time;
} else {
$lasttime{$serverno, $nick} = 0;
}
}
sub get {
local($serverno, $prefix, $chan) = @_;
local($userno, $nick, @msg, $to, @data, $size, %alias, %from, $date, @format, $lno, @params);
$userno = $'userno[$serverno];
$nick = &'prefix($prefix);
@msg = &get_msg($userno, $prefix);
%alias = &get_alias_user($userno, $prefix);
$alias{'nick.now'} = $nick;
if (&'channel($chan)) {
$alias{'channel'} = $chan;
$to = $chan;
} else {
$to = $nick;
}
if (@msg) {
foreach $line (@msg) {
@data = split(/\s+/, $line, 7);
%from = &get_alias_user($userno, $data[2], 'from');
$alias{'from.nick.now'} = &'prefix($data[2]);
if (&'channel($data[3])) {
$alias{'from.channel'} = $data[3];
}
$alias{'file'} = $data[4];
$alias{'message'} = $data[6];
$date = &'property($userno, 'date') || $DATE;
$alias{'date'} = &'date($date, $data[0]);
@format = &'property($userno, 'format');
if (@format) {
foreach $reply (@format) {
&privmsg($serverno, $nick, &'format($reply, %alias, %from));
}
} else {
&privmsg($serverno, $nick, &'format($FORMAT, %alias, %from));
}
$size = (stat($data[5]))[7];
if ($size) {
if ($lno = &'listen(0, 1)) {
$dcclistenlist = &'add($dcclistenlist, $lno);
@params = ();
push(@params, 'DCC');
push(@params, 'SEND');
push(@params, $data[4]);
push(@params, (&'sockname($serverno))[1]);
push(@params, (&'sockname($lno))[0]);
push(@params, $size);
&'s_print($serverno, '', 'PRIVMSG', $nick, "\cA" . join(' ', @params) . "\cA");
$info[$lno] = $line;
$name[$lno] = $data[5];
$size[$lno] = $size;
$done[$lno] = 0;
$pref[$lno] = $prefix;
$chan[$lno] = $chan;
$server[$lno] = $serverno;
} else {
foreach $reply (&'property($userno, 'geterror')) {
&privmsg($serverno, $to, &'format($reply, %alias, %from));
}
return;
}
}
&delete_msg($userno, @msg);
return;
}
} else {
foreach $reply (&'property($userno, 'nothing')) {
&privmsg($serverno, $to, &'format($reply, %alias));
}
}
$lasttime{$serverno, $nick} = 0;
}
sub check {
local($serverno, $prefix, $chan) = @_;
local($userno, $nick, $time, @msg, %alias);
$userno = $'userno[$serverno];
$nick = &'prefix($prefix);
%alias = &get_alias_user($userno, $prefix);
$alias{'nick.now'} = $nick;
if (&'channel($chan)) {
$alias{'channel'} = $chan;
$to = $chan;
} else {
$to = $nick;
}
@msg = &get_msg($userno, $prefix);
if (@msg) {
$alias{'number'} = @msg;
foreach $reply (&'property($userno, 'exists')) {
&privmsg($serverno, $to, &'format($reply, %alias));
}
$lasttime{$serverno, $nick} = time();
} else {
foreach $reply (&'property($userno, 'nothing')) {
&privmsg($serverno, $to, &'format($reply, %alias));
}
$lasttime{$serverno, $nick} = 0;
}
}
sub send {
local($serverno, $prefix, $chan, $who, $text) = @_;
local($userno, $nick, %alias, %to, $to, @arg, @params, $sno, $dir, $name);
$userno = $'userno[$serverno];
$nick = &'prefix($prefix);
%alias = &get_alias_user($userno, $prefix);
$alias{'nick.now'} = $nick;
$alias{'to'} = $who;
if (&'channel($chan)) {
$alias{'channel'} = $chan;
$to = $chan;
} else {
$to = $nick;
}
%to = &get_alias_name_nick($userno, $who, 'to');
if (%to || $who =~ /^[A-\}][\-\dA-\}]*$/ && length($who) <= 9) {
foreach $dcc (&'array($dcclist[$serverno])) {
@arg = split(/\s+/, $dcc, 3);
next unless $arg[0] eq $prefix;
$alias{'file'} = $params[1];
@params = split(/\s+/, $arg[2]);
if ($sno = &'connect($params[2], $params[3])) {
$dir = &'expand(&'property($userno, 'directory') || $DIRECTORY);
$name = "$dir/" . &newfile($dir, $params[1]);
$dcclist[$serverno] = &'remove($dcclist[$serverno], $dcc);
$info[$sno] = join(' ', time(), $who, $prefix, $chan, $params[1], $name, $text);
$name[$sno] = $name;
$size[$sno] = $params[4];
$done[$sno] = 0;
$pref[$sno] = $prefix;
$chan[$sno] = $chan;
$server[$sno] = $serverno;
$dccserverlist = &'add($dccserverlist, $sno);
} else {
foreach $reply (&'property($userno, 'senderror')) {
&privmsg($serverno, $to, &'format($reply, %alias, %to));
}
}
return;
}
foreach $reply (&'property($userno, 'norequest')) {
&privmsg($serverno, $to, &'format($reply, %alias, %to));
}
} else {
foreach $reply (&'property($userno, 'unknown')) {
&privmsg($serverno, $to, &'format($reply, %alias));
}
}
}
sub newfile {
local($dir, $file) = @_;
local($name, $ext);
$file =~ s/^.*[\\\/]([^\\\/]+)$/$1/;
$name = $file;
if (-e "$dir/$name") {
$ext = '';
if (rindex($file, '.') > 0) {
$ext = substr($file, rindex($file, '.'));
$file = substr($file, 0, rindex($file, '.'));
}
$num = 1;
$name = "$file-$num$ext";
while (-e "$dir/$name") {
$num++;
$name = "$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 msg_get {
local($cno, $prop) = @_;
local(@data, $to, %alias, %from);
@data = split(/\s+/, $info[$cno], 7);
if (&'channel($chan[$cno])) {
$to = $chan[$cno];
} else {
$to = &'prefix($pref[$cno]);
}
%alias = &get_alias_user($'userno[$server[$cno]], $pref[$cno]);
$alias{'nick.now'} = (&'prefix($pref[$cno]))[0];
if (&'channel($data[3])) {
$alias{'channel'} = $data[3];
}
$alias{'file'} = $data[4];
%from = &get_alias_user($'userno[$server[$cno]], $data[1], 'from');
$alias{'from.nick.now'} = (&'prefix($data[1]))[0];
if (&'channel($data[2])) {
$alias{'from.channel'} = $data[2];
}
foreach $reply (&'property($'userno[$server[$cno]], $prop)) {
&privmsg($server[$cno], $to, &'format($reply, %alias, %from));
}
}
sub msg_send {
local($sno, $prop) = @_;
local(@data, $to, %alias, %to);
@data = split(/\s+/, $info[$sno], 7);
if (&'channel($chan[$sno])) {
$to = $chan[$sno];
} else {
$to = &'prefix($pref[$sno]);
}
%alias = &get_alias_user($'userno[$server[$sno]], $pref[$sno]);
$alias{'nick.now'} = (&'prefix($pref[$sno]))[0];
if (&'channel($data[3])) {
$alias{'channel'} = $data[3];
}
$alias{'file'} = $data[4];
$alias{'to'} = $data[1];
%to = &get_alias_name_nick($'userno[$server[$sno]], $data[1], 'to');
foreach $reply (&'property($'userno[$server[$sno]], $prop)) {
&privmsg($server[$sno], $to, &'format($reply, %alias, %to));
}
}
sub get_msg {
local($userno, $prefix) = @_;
local($nick, @list, $name, $code, $line, @data, %alias, $regex);
@list = ();
$nick = &'prefix($prefix);
($name, $code) = &filename(&'property($userno, 'file'));
if (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, 7);
if (&check_alias($userno, $prefix, $data[1])) {
push(@list, $line);
}
}
close(FILE);
}
return @list;
}
sub add_msg {
local($userno, $msg) = @_;
local($name, $code);
($name, $code) = &filename(&'property($userno, 'file'));
$msg = &jis_code($line, $msg) if $code;
if (open(FILE, ">>$name")) {
print FILE $msg, "\n";
close(FILE);
}
}
sub delete_msg {
local($userno, @list) = @_;
local($name, $code, $list, @msg);
@msg = ();
($name, $code) = &filename(&'property($userno, 'file'));
if (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 get_alias_user {
local($userno, $from, $prefix) = @_;
local($file, @list);
$file = &'property($userno, 'alias');
foreach $list (&split_list('nick', &read_file($file))) {
@list = &'array($list);
if (&match_alias_user($from, @list)) {
return &parse_alias($prefix, @list);
}
}
return ();
}
sub get_alias_name_nick {
local($userno, $from, $prefix) = @_;
local($file, @list);
$file = &'property($userno, 'alias');
foreach $list (&split_list('nick', &read_file($file))) {
@list = &'array($list);
if (&match_alias_name_nick($from, @list)) {
return &parse_alias($prefix, @list);
}
}
return ();
}
sub check_alias {
local($userno, $from, $name) = @_;
local($file, @list, $nick);
$file = &'property($userno, 'alias');
foreach $list (&split_list('nick', &read_file($file))) {
@list = &'array($list);
if (&match_alias_name_nick($name, @list)) {
if (&match_alias_user($from, @list)) {
return 1;
} else {
return 0;
}
}
}
$nick = &'prefix($from);
if ("\L$name\E" eq "\L$nick\E") {
return 1;
} else {
return 0;
}
}
sub match_alias_user {
local($from, @list) = @_;
local($var, $arg, $regex);
foreach $line (@list) {
($var, $arg) = split(/\s+/, $line, 2);
next unless "\L$var\E" eq 'user';
$regex = &'regex($arg);
next unless $from =~ /$regex/i;
return 1;
}
return 0;
}
sub match_alias_name_nick {
local($from, @list) = @_;
local($var, $arg);
foreach $line (@list) {
($var, $arg) = split(/\s+/, $line, 2);
if ("\L$var\E" eq 'name') {
foreach $name (split(/\s+/, $arg)) {
next unless $from eq $name;
return 1;
}
} elsif ("\L$var\E" eq 'nick') {
next unless &'exist(&'list(split(/\s+/, $arg)), $from);
return 1;
}
}
return 0;
}
sub parse_alias {
local($prefix, @list) = @_;
local(%alias, $var, $arg, $key);
%alias = ();
foreach $line (@list) {
($var, $arg) = split(/\s+/, $line, 2);
$var = "\L$var\E";
if ($prefix) {
$key = $prefix . '.' . $var;
} else {
$key = $var;
}
next if defined($alias{$key});
if ($var eq 'nick') {
$alias{$key} = (split(/\,/, $arg))[0];
} elsif ($var eq 'name') {
$alias{$key} = (split(/\s+/, $arg))[0];
} else {
$alias{$key} = $arg;
}
}
return %alias;
}
sub split_list {
local($field, @list) = @_;
local($var, $arg, @array, @entry);
$field = "\L$field\E";
@array = ();
@entry = ();
foreach $line (@list) {
($var, $arg) = split(/\s*\:\s*/, $line, 2);
if ($field eq "\L$var\E") {
push(@array, &'list(@entry)) if @entry;
@entry = ();
}
push(@entry, $var . ' ' . $arg);
}
push(@array, &'list(@entry)) if @entry;
return @array;
}
sub read_file {
local($file) = @_;
local($name, $code, $mtime, @data, $line);
($name, $code) = &filename($file);
$mtime = (stat($name))[9];
if (defined($mtime)) {
$modify{$name} = -1 unless defined($modify{$name});
if ($modify{$name} != $mtime) {
if (open(TMP, $name)) {
@data = ();
while (defined($line = <TMP>)) {
$line =~ s/^\s+//;
next if $line =~ /^[\#\;]/;
$line =~ tr/\r\n//d;
next unless $line;
$line =~ s/\s+$//;
$line = &code_jis($line, $code) if $code;
push(@data, $line);
}
close(TMP);
$modify{$name} = $mtime;
$cache{$name} = &'list(@data);
return @data;
}
} else {
return &'array($cache{$name});
}
}
return ();
}
sub filename {
local($file) = @_;
local($idx, $name, $code);
return ('', '') unless $file;
if (($idx = rindex($file, ';')) != -1) {
$name = substr($file, 0, $idx);
$code = substr($file, $idx + 1);
} else {
$name = $file;
$code = '';
}
return (&'expand($name), $code);
}
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;
}
__END__
--><HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
<LINK REV="made" HREF="mailto:hasegawa@madoka.org">
<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!#(BDCC$B$NAw?.BT$A$N>uBV$G(B
$B$3$3$G;XDj$7$?J8;zNs$H!"$=$l$KB3$/Aw$j@h$H%a%C%;!<%8$rH/8@$9$k$H!"(B
$B;XDj$7$?Aw$j@h$K%U%!%$%k$rAw?.$7$^$9!#(B
</DD>
<DT> auto.package.check* $BJ8;zNs(B
</DT>
<DD> $B%U%!%$%k$,FO$$$F$$$k$+$I$&$+3NG'$9$k$?$a$NJ8;zNs$r;XDj$7$^$9!#(B
$B$3$3$G;XDj$7$?J8;zNs$HF1$8J8;zNs$,H/8@$5$l$k$H!"(B
$B$=$N?M$KBP$7$FAw$i$l$?%U%!%$%k$,$"$k$+$I$&$+3NG'$7!"(B
$B$=$N7k2L$rH/8@$7$^$9!#(B
</DD>
<DT> auto.package.date $BJ8;zNs(B
</DT>
<DD> auto.package.format$B$G;XDj$9$k$3$H$N$G$-$kCM$N$&$A!"(B
#(date)$B$GCV49$5$l$kF|IU$N%U%)!<%^%C%H$r;XDj$7$^$9!#(B
$B%G%U%)%k%H$G$O!V(B%m/%d %H:%M$B!W$H$J$C$F$$$^$9!#(B
</DD>
<DT> auto.package.format* $B%U%)!<%^%C%H(B
</DT>
<DD> $BAw$j@h$K%U%!%$%k$rAw$k$H$-$K!"$I$N$h$&$J7A<0$GH/8@$9$k$+$r(B
$B;XDj$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K=q$/$3$H$G!"(B
$B%U%!%$%k$r<u$1$H$k?M$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
$B$^$?!"%U%!%$%k$rAw$C$??M$N%(%$%j%"%9$O(B#(from.nick)$B$N$h$&$J7A<0(B
$B$GCV49$9$k$3$H$,$G$-$^$9!#%(%$%j%"%90J30$N>pJs$H$7$F$O!"(B
#(date)$B$G%U%!%$%k$rAw$C$?F|IU$H;~9o$r!"(B#(message)$B$G(B
$B%U%!%$%k$NFbMF$r$=$l$>$lCV$-49$($^$9!#(B
$B$^$?!"3g8LFb$r!V(B|$B!W$G6h@Z$C$FJ#?t;XDj$7$?>l9g!"(B
$B:G=i$KDj5A$5$l$F$$$kCM$GCV$-49$($^$9!#(B
</DD>
<DT> auto.package.accept* $B%U%)!<%^%C%H(B
</DT>
<DD> $B%U%!%$%k$r@5$7$/<u$1<h$k$C$?$H$-$K!"$3$3$G;XDj$7$?$b$N$r(B
$BH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K;XDj$9$k$3$H$G!"(B
$B%U%!%$%k$NAw$j85$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
$B$^$?!"(B#(to)$B$G%U%!%$%k$NAw$j@h$H$7$F;XDj$7$?L>A0$r!"(B
#(to.nick)$B$N$h$&$K!V(Bto.$B!W$rIU$1$k$3$H$G!"%U%!%$%k$NAw$j@h$N(B
$B%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
</DD>
<DT> auto.package.receive* $B%U%)!<%^%C%H(B
</DT>
<DD> $B%A%c%s%M%k$KF~$C$F$-$?;~$d!"%K%C%/%M!<%`$rJQ99$7$?;~$K!"(B
$B$=$N?M$KBP$9$k%a%C%;!<%8$,FO$$$F$$$l$P!"$3$3$G;XDj$7$?$b$N$r(B
$BH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K;XDj$9$k$3$H$G!"(B
$B%U%!%$%k$NAw$j85$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
$B$^$?!"(B#(number)$B$GFO$$$F$$$k%U%!%$%k?t$KCV$-49$($^$9!#(B
</DD>
<DT> auto.package.norequest* $B%U%)!<%^%C%H(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$?$b$N$rH/8@$7$^$9!#(B
$B%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K;XDj$9$k$3$H$G!"(B
$B%U%!%$%k$NAw$j85$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
</DD>
<DT> auto.package.unknown* $B%U%)!<%^%C%H(B
</DT>
<DD> $B%U%!%$%k$rAw$kAj<j$,$o$+$i$J$$$H$-$K!"$3$3$G;XDj$7$?$b$N$r(B
$BH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K;XDj$9$k$3$H$G!"(B
$B%U%!%$%k$NAw$j85$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
$B$^$?!"(B#(to)$B$G%U%!%$%k$rAw$m$&$H$7$?Aj<j$NL>A0$KCV$-49$($^$9!#(B
</DD>
<DT> auto.package.nothing* $B%U%)!<%^%C%H(B
</DT>
<DD> $B%U%!%$%k$r<u$1<h$m$&$H$7$?$,!"%U%!%$%k$,FO$$$F$$$J$+$C$?$H$-!"(B
$B$3$3$G;XDj$7$?$b$N$rH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K(B
$B;XDj$9$k$3$H$G!"%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
</DD>
<DT> auto.package.exists* $B%U%)!<%^%C%H(B
</DT>
<DD> $B%U%!%$%k$,FO$$$F$$$k$+$I$&$+3NG'$7$?$H$-$K!"(B
$BFO$$$F$$$k%U%!%$%k$,$"$l$P!"$3$3$G;XDj$7$?$b$N$rH/8@$7$^$9!#(B
</DD>
<DT> auto.package.geterror* $B%U%)!<%^%C%H(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$?$b$N$rH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K(B
$B;XDj$9$k$3$H$G!"%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
$B$^$?!"(B#(file)$B$GE>AwCf$N%U%!%$%kL>$KCV$-49$($^$9!#(B
</DD>
<DT> auto.package.senderror* $B%U%)!<%^%C%H(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$?$b$N$rH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K(B
$B;XDj$9$k$3$H$G!"%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
$B$^$?!"(B#(file)$B$GE>AwCf$N%U%!%$%kL>$KCV$-49$($^$9!#(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.format: #(from.name|from.nick.now)$B$5$s$+$i!V(B#(message)$B!W(B(#(date))
auto.package.date: %m$B7n(B%d$BF|(B%H$B;~(B%M$BJ,(B
auto.package.accept: $B>.Jq$r<u$1<h$j$^$7$?(B
auto.package.receive: #(number)$B8D$N>.Jq$,FO$$$F$$$^$9!#!V>.JqAw$C$F!W$G$*FO$1$7$^$9!#(B
auto.package.norequest: #(name|nick.now): DCC$BMW5a$,$"$j$^$;$s(B
auto.package.unknown: #(to)$B$5$s$H$$$&$N$OC/$G$9$+(B?
auto.package.nothing: #(name|nick)$B$5$s08$N>.Jq$OFO$$$F$$$^$;$s(B
auto.package.geterror: #(nick.now): #(file)$B$NAw?.$K<:GT$7$^$7$?(B
auto.package.senderror: #(nick.now): #(file)$B$N<u?.$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>