+++ /dev/null
-#!/usr/bin/perl
-# $Id: check-old-reservation,v 1.2 2000/02/27 16:23:46 fuku Exp $
-
-################################################################
-# ÀßÄê¹àÌÜ
-################################################################
-# ¼è¤ê¾Ã¤·Æü¿ô: ͽÌ󤷤Ƥ«¤é¤³¤ÎÆü¿ô¤òĶ²á¤·¤¿¤â¤Î¤Ï¼è¤ê¾Ã¤·¸õÊä?
-$days_fatal = 360;
-# ·Ù¹ðÆü¿ô: ͽÌ󤷤Ƥ«¤é¤³¤ÎÆü¿ô¤òĶ²á¤·¤¿¤â¤Î¤Ï·Ù¹ð :)
-$days_warning = 180;
-# sendmail ¤Î¥Ñ¥¹
-$sendmail = '/usr/sbin/sendmail';
-
-################################################################
-# º£Æü¤Îǯ·îÆü
-my ($this_year, $this_month, $this_day) = &today;
-
-# º£Æü¤Ï UNIX epoch ¤«¤é²¿Æü?
-$today = &days_from_epoch($this_year, $this_month, $this_day);
-
-while(@ARGV){
- my $arg = shift;
-
- if($arg eq '-v'){
- $verbose = 1;
- next;
- }
-
- if($arg eq '-h'){
- &usage;
- next;
- }
-
- if($arg eq '-m'){
- $mail = 1;
- next;
- }
-
- $list_file = $arg;
-}
-
-&usage unless -r $list_file;
-open(LIST, "nkf -e < $list_file |") || die "Can't open $list_file\n";
-
-while(<LIST>){
- chomp;
-
- if(/^#/){
- next;
- }
-
- # tabs to space
- s/\t/ /g;
-
- if(/^([A-Z][A-Z][A-Z][A-Z]):\s+(.*)$/){
- my ($name, $arg) = ($1, $2);
- $props{$name} = $arg;
- next;
- }
-
- if(/^\s*$/){
-
- unless(keys(%props)){
- # ¤³¤ì¤Ï¤¿¤À¤Î̵³²¤Ê¶õÇò¹Ô¡¢µ¤¤Ë¤·¤Ê¤¤
- next;
- }
-
- if(!length($props{'NAME'}) ||
- !length($props{'TRNS'}) ||
- !length($props{'PDAT'}) ||
- !length($props{'STAT'})){
- die "Insufficient entry at line $.\n";
- }
-
- my($y, $m, $d) = ($props{'PDAT'} =~ m|(\d\d\d\d)/(\d+)/(\d+)|);
- my $days = sprintf('%05d', $today - &days_from_epoch($y, $m, $d));
- warn "$props{'NAME'}: $days days\n";
-
- push @status, join("\t", $days, $props{'NAME'}, $props{'TRNS'},
- $props{'PDAT'}, $props{'STAT'}, $props{'NOTE'});
- %props = ();
- }
-}
-close(LIST);
-
-# Æü¿ô¤Ç¥½¡¼¥È¤·¤Æ..
-for(reverse sort @status){
- my ($days, $name, $trns, $pdat, $stat, $note) = split(/\t/);
-
- $days += 0;
-
- if($days > $days_fatal){
- print "--- FATAL ---------------------------------------------\n";
- print "| ʸ½ñ̾: $name\n";
- print "| ͽÌóÆü»þ: $pdat\n";
- print "| ôÅö¼Ô: $trns\n";
- print "| ¥¹¥Æ¡¼¥¿¥¹: $stat\n";
- print "| Ķ²áÆü¿ô: $days Æü\n\n";
- my $msg = &fatal($trns, $name, $pdat, $days);
- print $msg if $verbose;
- &mail($msg, $trns) if $mail;
- }elsif($days > $days_warning){
- print "--- WARNING -------------------------------------------\n";
- print "| ʸ½ñ̾: $name\n";
- print "| ͽÌóÆü»þ: $pdat\n";
- print "| ôÅö¼Ô: $trns\n";
- print "| ¥¹¥Æ¡¼¥¿¥¹: $stat\n";
- print "| Ķ²áÆü¿ô: $days Æü\n\n";
- my $msg = &warning($trns, $name, $pdat, $days);
- print $msg if $verbose;
- &mail($msg, $trns) if $mail;
- }else{
- print "--- INFO ----------------------------------------------\n";
- print "| ʸ½ñ̾: $name\n";
- print "| ͽÌóÆü»þ: $pdat\n";
- print "| ôÅö¼Ô: $trns\n";
- print "| ¥¹¥Æ¡¼¥¿¥¹: $stat\n";
- print "| Ķ²áÆü¿ô: $days Æü\n\n";
- }
-}
-
-exit;
-
-################################################################
-sub today{
- my ($a, $b, $c, $d, $m, $y) = localtime(time);
- ($y+1900, $m+1, $d);
-}
-
-################################################################
-sub days_from_epoch{
- my($y, $m, $d) = @_;
- my($i);
-
- for($i=1970; $i<$y; $i++){
- $d += 365;
- $d ++ unless $i % 4;
- }
-
- for($i=1; $i<$m; $i++){
- $d += (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)[$i];
- $d++ if $i==2 && !($y % 4);
- }
-
- $d;
-}
-
-################################################################
-sub usage{
- die <DATA>;
-}
-
-################################################################
-sub mail{
- my($msg, $mail) = @_;
-
- # `-f sender' ¥ª¥×¥·¥ç¥ó¤Ï¡¢sendmail.cf ¤Ë¤è¤Ã¤Æ¤ÏÅܤé¤ì¤ë¤·¡¢
- # ¼ÂÁõ¤µ¤ì¤Æ¤Ê¤¤¾ì¹ç¤â¤¢¤ë (qmail ¤Î sendmail ¥é¥Ã¥Ñ¤È¤«)
- open(OUT, "| nkf -j | $sendmail $mail") || die;
- print OUT $msg;
- close(OUT);
-}
-
-################################################################
-sub warning{
- my($mail, $name, $date, $days) = @_;
-
- return << "EOM";
-To: $mail
-Subject: status of `$name' ?
-From: JF-gofer\@linux.or.jp
-Reply-To: JF\@linux.or.jp
-Content-Type: text/plain; charset=iso-2022-jp
-
-(¤³¤Î¥á¡¼¥ë¤Ï¼«Æ°Á÷¿®¤µ¤ì¤Æ¤¤¤Þ¤¹)
-¤³¤ó¤Ë¤Á¤Ï. JF-gofer ¥°¥ë¡¼¥×¤Ç¤¹.
-ͽÌ󤵤ì¤Æ¤¤¤ëʸ½ñ¤ÎËÝÌõ¿Ê¹Ô¾õ¶·¤Ë¤Ä¤¤¤Æ¤ª¿Ò¤Í¤·¤Þ¤¹.
-
-$mail ¤µ¤ó¤Ï,
-ʸ½ñ̾ `$name' ¤Î(ËÝÌõ)ºî¶È¤ò $date ¤ËͽÌ󤵤ì¤Æ¤ª¤ê,
-¸½ºßͽÌóÆü°Ê¹ß $days Æü¤¬·Ð²á¤·¤Æ¤¤¤Þ¤¹.
-
-ºî¶È¤Î¾õ¶·¤Ï¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«? ¤â¤·¤ª°ì¿Í¤Ç¤Îºî¶È¤¬ÂçÊѤǤ·¤¿¤é,
-JF ¥á¥ó¥Ð¤Ëʬô¤·¤Æ¤Îºî¶È¤ò¤ª´«¤á¤·¤Þ¤¹.
-
-¤Ê¤ª, ¤³¤Î¥á¡¼¥ë¤¬¥É¥á¥¤¥óÊѹ¹¤Ê¤É¤ÇÆϤ«¤Ê¤«¤Ã¤¿¾ì¹ç,
-¤¢¤ë¤¤¤Ï 1 ¥ö·î·Ð¤Ã¤Æ¤â¤³¤Î¥á¡¼¥ë¤Ø¤ÎÊÖÅú¤¬¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï,
-ºî¶È¤¬Ää»ß¾õÂ֤ˤ¢¤ë¤È¤ß¤Ê¤·, ¾¤ÎÊý¤¬Í½Ìó¤Ç¤¤ë¤è¤¦
-¤¢¤Ê¤¿¤Î $name ¤Ë´Ø¤¹¤ëºî¶ÈͽÌó¤òËõ¾Ã¤¤¤¿¤·¤Þ¤¹.
-
-¤³¤Î¥á¡¼¥ë¤ËÊÖÅú¤¹¤ë¤È JF\@linux.or.jp ¤ËÆϤ¯¤³¤È¤Ë¤Ê¤ê¤Þ¤¹.
-¤³¤ì¤Ï, ºî¶È¤Î¿Ê¹Ô¾õ¶·¤ò JF ¥á¥ó¥ÐÁ´°÷¤Çǧ¼±¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹.
-
-¤½¤ì¤Ç¤Ï,²¼¤Î¶õÇòÉôʬ¤òËä¤á¤¿·Á¤Ç¤ÎÊÖÅú¤ò¤ª¤Í¤¬¤¤¤¤¤¿¤·¤Þ¤¹.
-
-ͽÌóʸ½ñ̾: $name
-ͽÌó¼Ô̾: $mail
-ͽÌó¤ò¤É¤¦¤¹¤ë¤«? : ͽÌó·Ñ³ / ͽÌó¼è¤ê¾Ã¤· / ºÆÅÙͽÌó
-¸½¾õÊó¹ð:
- [·Ñ³¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.¤¢¤È¡û¡û¹Ô¤Ê¤Î¤Ç,¢¢¢¢% ½ª¤ï¤Ã¤Æ¤¤¤Þ¤¹]
- [¼è¤ê¾Ã¤·¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.¤½¤ÎÉôʬ¤Þ¤Ç¤òźÉÕ]
- [ºÆͽÌó¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.ºÆÅÙͽÌó¤·¤Þ¤¹]
-
-JF ¤Ï¥Ü¥é¥ó¥¿¥ê¤Ê³èÆ°¤Ç¤¹¤Î¤Ç, ÅÓÃæ¤Çºî¶È¤Ç¤¤Ê¤¯¤Ê¤ë¾õ¶·¤Ë´Ù¤Ã¤¿¤ê
-¤¹¤ë¤³¤È¤ÏÅöÁ³¤¢¤êÆÀ¤Þ¤¹. ¤³¤ì¤Ï²¿¤éÃѤ¸¤ë¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó.
-¤·¤«¤·, ¤½¤¦¤¤¤Ã¤¿¾ì¹ç¤Ï, ¤Ê¤ë¤Ù¤¯Áá¤á¤Ë¡Ö¼ê¤ò¾å¤²¤Æ¡×, ¾¤Î¥á¥ó¥Ð¤Ø¤Î
-ºî¶È¤Î°Ñ¾ù¤ò¤ª´ê¤¤¤·¤Þ¤¹.
-
-¤Þ¤¿, ͽÌó¤ò¼è¤ê¾Ã¤µ¤ì¤ë¾ì¹ç¤Ï, ¤½¤ì¤Þ¤Ç¤ÎÌõʸ¤ò JF ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë
-ή¤¹¤Ê¤É¤·¤Æ, ¤Ç¤¤ë¸Â¤êºî¶È·ë²Ì¤ò¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¯¤À¤µ¤ë¤è¤¦¤ª´ê¤¤¤¤¤¿
-¤·¤Þ¤¹.
-
-JF Project ¤Îºî¶È±ß³ê¤Î¤¿¤á, ¤¼¤Ò¤´¶¨ÎϤò¤ª´ê¤¤¤¤¤¿¤·¤Þ¤¹.
-
---
-JF-gofer ¥°¥ë¡¼¥×
-
-EOM
-}
-
-################################################################
-sub fatal{
- my($mail, $name, $date, $days) = @_;
-
- return << "EOM";
-To: $mail
-Subject: status of `$name' ?
-From: JF-gofer\@linux.or.jp
-Reply-To: JF\@linux.or.jp
-Content-Type: text/plain; charset=iso-2022-jp
-
-(¤³¤Î¥á¡¼¥ë¤Ï¼«Æ°Á÷¿®¤µ¤ì¤Æ¤¤¤Þ¤¹)
-¤³¤ó¤Ë¤Á¤Ï. JF-gofer ¥°¥ë¡¼¥×¤Ç¤¹.
-ͽÌ󤵤ì¤Æ¤¤¤ëʸ½ñ¤ÎËÝÌõ¿Ê¹Ô¾õ¶·¤Ë¤Ä¤¤¤Æ¤ª¿Ò¤Í¤·¤Þ¤¹.
-
-$mail ¤µ¤ó¤Ï,
-ʸ½ñ̾ `$name' ¤Î(ËÝÌõ)ºî¶È¤ò $date ¤ËͽÌ󤵤ì¤Æ¤ª¤ê,
-¸½ºßͽÌóÆü°Ê¹ß $days Æü¤¬·Ð²á¤·¤Æ¤¤¤Þ¤¹.
-
-ºî¶È¤Î¾õ¶·¤Ï¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«? ͽÌó¤Î°ìö¼è¤ê¾Ã¤·, ¤Ê¤¤¤·¤ÏͽÌó¤·Ä¾¤·
-¤ò¤ª´«¤á¤·¤Þ¤¹.
-
-¤Ê¤ª, ¤³¤Î¥á¡¼¥ë¤¬¥É¥á¥¤¥óÊѹ¹¤Ê¤É¤ÇÆϤ«¤Ê¤«¤Ã¤¿¾ì¹ç,
-¤¢¤ë¤¤¤Ï 1 ¥ö·î·Ð¤Ã¤Æ¤â¤³¤Î¥á¡¼¥ë¤Ø¤ÎÊÖÅú¤¬¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï,
-ºî¶È¤¬Ää»ß¾õÂ֤ˤ¢¤ë¤È¤ß¤Ê¤·, ¾¤ÎÊý¤¬Í½Ìó¤Ç¤¤ë¤è¤¦
-¤¢¤Ê¤¿¤Î $name ¤Ë´Ø¤¹¤ëºî¶ÈͽÌó¤òËõ¾Ã¤¤¤¿¤·¤Þ¤¹.
-
-¤³¤Î¥á¡¼¥ë¤ËÊÖÅú¤¹¤ë¤È JF\@linux.or.jp ¤ËÆϤ¯¤³¤È¤Ë¤Ê¤ê¤Þ¤¹.
-¤³¤ì¤Ï, ºî¶È¤Î¿Ê¹Ô¾õ¶·¤ò JF ¥á¥ó¥ÐÁ´°÷¤Çǧ¼±¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹.
-
-¤½¤ì¤Ç¤Ï,²¼¤Î¶õÇòÉôʬ¤òËä¤á¤¿·Á¤Ç¤ÎÊÖÅú¤ò¤ª¤Í¤¬¤¤¤¤¤¿¤·¤Þ¤¹.
-
-ͽÌóʸ½ñ̾: $name
-ͽÌó¼Ô̾: $mail
-ͽÌó¤ò¤É¤¦¤¹¤ë¤«? : ͽÌó·Ñ³ / ͽÌó¼è¤ê¾Ã¤· / ºÆÅÙͽÌó
-¸½¾õÊó¹ð:
- [·Ñ³¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.¤¢¤È¡û¡û¹Ô¤Ê¤Î¤Ç,¢¢¢¢% ½ª¤ï¤Ã¤Æ¤¤¤Þ¤¹]
- [¼è¤ê¾Ã¤·¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.¤½¤ÎÉôʬ¤Þ¤Ç¤òźÉÕ]
- [ºÆͽÌó¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.ºÆÅÙͽÌó¤·¤Þ¤¹]
-
-JF ¤Ï¥Ü¥é¥ó¥¿¥ê¤Ê³èÆ°¤Ç¤¹¤Î¤Ç, ÅÓÃæ¤Çºî¶È¤Ç¤¤Ê¤¯¤Ê¤ë¾õ¶·¤Ë´Ù¤Ã¤¿¤ê
-¤¹¤ë¤³¤È¤ÏÅöÁ³¤¢¤êÆÀ¤Þ¤¹. ¤³¤ì¤Ï²¿¤éÃѤ¸¤ë¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó.
-¤·¤«¤·, ¤½¤¦¤¤¤Ã¤¿¾ì¹ç¤Ï, ¤Ê¤ë¤Ù¤¯Áá¤á¤Ë¡Ö¼ê¤ò¾å¤²¤Æ¡×, ¾¤Î¥á¥ó¥Ð¤Ø¤Î
-ºî¶È¤Î°Ñ¾ù¤ò¤ª´ê¤¤¤·¤Þ¤¹.
-
-¤Þ¤¿, ͽÌó¤ò¼è¤ê¾Ã¤µ¤ì¤ë¾ì¹ç¤Ï, ¤½¤ì¤Þ¤Ç¤ÎÌõʸ¤ò JF ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë
-ή¤¹¤Ê¤É¤·¤Æ, ¤Ç¤¤ë¸Â¤êºî¶È·ë²Ì¤ò¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¯¤À¤µ¤ë¤è¤¦¤ª´ê¤¤¤¤¤¿
-¤·¤Þ¤¹.
-
-JF Project ¤Îºî¶È±ß³ê¤Î¤¿¤á, ¤¼¤Ò¤´¶¨ÎϤò¤ª´ê¤¤¤¤¤¿¤·¤Þ¤¹.
-
---
-JF-gofer ¥°¥ë¡¼¥×
-
-EOM
-}
-
-__END__
-Usage: check-old-reservation [options] reserved.list
-Options:
- -v verbose: also print generated mail message to stdout
- -m do mail the messages
- -h show this help