2 # $Id: check-old-reservation,v 1.2 2000/02/27 16:23:46 fuku Exp $
4 ################################################################
6 ################################################################
7 # ¼è¤ê¾Ã¤·Æü¿ô: ͽÌ󤷤Ƥ«¤é¤³¤ÎÆü¿ô¤òĶ²á¤·¤¿¤â¤Î¤Ï¼è¤ê¾Ã¤·¸õÊä?
9 # ·Ù¹ðÆü¿ô: ͽÌ󤷤Ƥ«¤é¤³¤ÎÆü¿ô¤òĶ²á¤·¤¿¤â¤Î¤Ï·Ù¹ð :)
12 $sendmail = '/usr/sbin/sendmail';
14 ################################################################
16 my ($this_year, $this_month, $this_day) = &today;
18 # º£Æü¤Ï UNIX epoch ¤«¤é²¿Æü?
19 $today = &days_from_epoch($this_year, $this_month, $this_day);
42 &usage unless -r $list_file;
43 open(LIST, "nkf -e < $list_file |") || die "Can't open $list_file\n";
55 if(/^([A-Z][A-Z][A-Z][A-Z]):\s+(.*)$/){
56 my ($name, $arg) = ($1, $2);
64 # ¤³¤ì¤Ï¤¿¤À¤Î̵³²¤Ê¶õÇò¹Ô¡¢µ¤¤Ë¤·¤Ê¤¤
68 if(!length($props{'NAME'}) ||
69 !length($props{'TRNS'}) ||
70 !length($props{'PDAT'}) ||
71 !length($props{'STAT'})){
72 die "Insufficient entry at line $.\n";
75 my($y, $m, $d) = ($props{'PDAT'} =~ m|(\d\d\d\d)/(\d+)/(\d+)|);
76 my $days = sprintf('%05d', $today - &days_from_epoch($y, $m, $d));
77 warn "$props{'NAME'}: $days days\n";
79 push @status, join("\t", $days, $props{'NAME'}, $props{'TRNS'},
80 $props{'PDAT'}, $props{'STAT'}, $props{'NOTE'});
87 for(reverse sort @status){
88 my ($days, $name, $trns, $pdat, $stat, $note) = split(/\t/);
92 if($days > $days_fatal){
93 print "--- FATAL ---------------------------------------------\n";
94 print "| ʸ½ñ̾: $name\n";
95 print "| ͽÌóÆü»þ: $pdat\n";
96 print "| ôÅö¼Ô: $trns\n";
97 print "| ¥¹¥Æ¡¼¥¿¥¹: $stat\n";
98 print "| Ķ²áÆü¿ô: $days Æü\n\n";
99 my $msg = &fatal($trns, $name, $pdat, $days);
100 print $msg if $verbose;
101 &mail($msg, $trns) if $mail;
102 }elsif($days > $days_warning){
103 print "--- WARNING -------------------------------------------\n";
104 print "| ʸ½ñ̾: $name\n";
105 print "| ͽÌóÆü»þ: $pdat\n";
106 print "| ôÅö¼Ô: $trns\n";
107 print "| ¥¹¥Æ¡¼¥¿¥¹: $stat\n";
108 print "| Ķ²áÆü¿ô: $days Æü\n\n";
109 my $msg = &warning($trns, $name, $pdat, $days);
110 print $msg if $verbose;
111 &mail($msg, $trns) if $mail;
113 print "--- INFO ----------------------------------------------\n";
114 print "| ʸ½ñ̾: $name\n";
115 print "| ͽÌóÆü»þ: $pdat\n";
116 print "| ôÅö¼Ô: $trns\n";
117 print "| ¥¹¥Æ¡¼¥¿¥¹: $stat\n";
118 print "| Ķ²áÆü¿ô: $days Æü\n\n";
124 ################################################################
126 my ($a, $b, $c, $d, $m, $y) = localtime(time);
130 ################################################################
135 for($i=1970; $i<$y; $i++){
140 for($i=1; $i<$m; $i++){
141 $d += (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)[$i];
142 $d++ if $i==2 && !($y % 4);
148 ################################################################
153 ################################################################
155 my($msg, $mail) = @_;
157 # `-f sender' ¥ª¥×¥·¥ç¥ó¤Ï¡¢sendmail.cf ¤Ë¤è¤Ã¤Æ¤ÏÅܤé¤ì¤ë¤·¡¢
158 # ¼ÂÁõ¤µ¤ì¤Æ¤Ê¤¤¾ì¹ç¤â¤¢¤ë (qmail ¤Î sendmail ¥é¥Ã¥Ñ¤È¤«)
159 open(OUT, "| nkf -j | $sendmail $mail") || die;
164 ################################################################
166 my($mail, $name, $date, $days) = @_;
170 Subject: status of `$name' ?
171 From: JF-gofer\@linux.or.jp
172 Reply-To: JF\@linux.or.jp
173 Content-Type: text/plain; charset=iso-2022-jp
175 (¤³¤Î¥á¡¼¥ë¤Ï¼«Æ°Á÷¿®¤µ¤ì¤Æ¤¤¤Þ¤¹)
176 ¤³¤ó¤Ë¤Á¤Ï. JF-gofer ¥°¥ë¡¼¥×¤Ç¤¹.
177 ͽÌ󤵤ì¤Æ¤¤¤ëʸ½ñ¤ÎËÝÌõ¿Ê¹Ô¾õ¶·¤Ë¤Ä¤¤¤Æ¤ª¿Ò¤Í¤·¤Þ¤¹.
180 ʸ½ñ̾ `$name' ¤Î(ËÝÌõ)ºî¶È¤ò $date ¤ËͽÌ󤵤ì¤Æ¤ª¤ê,
181 ¸½ºßͽÌóÆü°Ê¹ß $days Æü¤¬·Ð²á¤·¤Æ¤¤¤Þ¤¹.
183 ºî¶È¤Î¾õ¶·¤Ï¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«? ¤â¤·¤ª°ì¿Í¤Ç¤Îºî¶È¤¬ÂçÊѤǤ·¤¿¤é,
184 JF ¥á¥ó¥Ð¤Ëʬô¤·¤Æ¤Îºî¶È¤ò¤ª´«¤á¤·¤Þ¤¹.
186 ¤Ê¤ª, ¤³¤Î¥á¡¼¥ë¤¬¥É¥á¥¤¥óÊѹ¹¤Ê¤É¤ÇÆϤ«¤Ê¤«¤Ã¤¿¾ì¹ç,
187 ¤¢¤ë¤¤¤Ï 1 ¥ö·î·Ð¤Ã¤Æ¤â¤³¤Î¥á¡¼¥ë¤Ø¤ÎÊÖÅú¤¬¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï,
188 ºî¶È¤¬Ää»ß¾õÂ֤ˤ¢¤ë¤È¤ß¤Ê¤·, ¾¤ÎÊý¤¬Í½Ìó¤Ç¤¤ë¤è¤¦
189 ¤¢¤Ê¤¿¤Î $name ¤Ë´Ø¤¹¤ëºî¶ÈͽÌó¤òËõ¾Ã¤¤¤¿¤·¤Þ¤¹.
191 ¤³¤Î¥á¡¼¥ë¤ËÊÖÅú¤¹¤ë¤È JF\@linux.or.jp ¤ËÆϤ¯¤³¤È¤Ë¤Ê¤ê¤Þ¤¹.
192 ¤³¤ì¤Ï, ºî¶È¤Î¿Ê¹Ô¾õ¶·¤ò JF ¥á¥ó¥ÐÁ´°÷¤Çǧ¼±¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹.
194 ¤½¤ì¤Ç¤Ï,²¼¤Î¶õÇòÉôʬ¤òËä¤á¤¿·Á¤Ç¤ÎÊÖÅú¤ò¤ª¤Í¤¬¤¤¤¤¤¿¤·¤Þ¤¹.
198 ͽÌó¤ò¤É¤¦¤¹¤ë¤«? : ͽÌó·Ñ³ / ͽÌó¼è¤ê¾Ã¤· / ºÆÅÙͽÌó
200 [·Ñ³¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.¤¢¤È¡û¡û¹Ô¤Ê¤Î¤Ç,¢¢¢¢% ½ª¤ï¤Ã¤Æ¤¤¤Þ¤¹]
201 [¼è¤ê¾Ã¤·¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.¤½¤ÎÉôʬ¤Þ¤Ç¤òźÉÕ]
202 [ºÆͽÌó¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.ºÆÅÙͽÌó¤·¤Þ¤¹]
204 JF ¤Ï¥Ü¥é¥ó¥¿¥ê¤Ê³èÆ°¤Ç¤¹¤Î¤Ç, ÅÓÃæ¤Çºî¶È¤Ç¤¤Ê¤¯¤Ê¤ë¾õ¶·¤Ë´Ù¤Ã¤¿¤ê
205 ¤¹¤ë¤³¤È¤ÏÅöÁ³¤¢¤êÆÀ¤Þ¤¹. ¤³¤ì¤Ï²¿¤éÃѤ¸¤ë¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó.
206 ¤·¤«¤·, ¤½¤¦¤¤¤Ã¤¿¾ì¹ç¤Ï, ¤Ê¤ë¤Ù¤¯Áá¤á¤Ë¡Ö¼ê¤ò¾å¤²¤Æ¡×, ¾¤Î¥á¥ó¥Ð¤Ø¤Î
207 ºî¶È¤Î°Ñ¾ù¤ò¤ª´ê¤¤¤·¤Þ¤¹.
209 ¤Þ¤¿, ͽÌó¤ò¼è¤ê¾Ã¤µ¤ì¤ë¾ì¹ç¤Ï, ¤½¤ì¤Þ¤Ç¤ÎÌõʸ¤ò JF ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë
210 ή¤¹¤Ê¤É¤·¤Æ, ¤Ç¤¤ë¸Â¤êºî¶È·ë²Ì¤ò¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¯¤À¤µ¤ë¤è¤¦¤ª´ê¤¤¤¤¤¿
213 JF Project ¤Îºî¶È±ß³ê¤Î¤¿¤á, ¤¼¤Ò¤´¶¨ÎϤò¤ª´ê¤¤¤¤¤¿¤·¤Þ¤¹.
221 ################################################################
223 my($mail, $name, $date, $days) = @_;
227 Subject: status of `$name' ?
228 From: JF-gofer\@linux.or.jp
229 Reply-To: JF\@linux.or.jp
230 Content-Type: text/plain; charset=iso-2022-jp
232 (¤³¤Î¥á¡¼¥ë¤Ï¼«Æ°Á÷¿®¤µ¤ì¤Æ¤¤¤Þ¤¹)
233 ¤³¤ó¤Ë¤Á¤Ï. JF-gofer ¥°¥ë¡¼¥×¤Ç¤¹.
234 ͽÌ󤵤ì¤Æ¤¤¤ëʸ½ñ¤ÎËÝÌõ¿Ê¹Ô¾õ¶·¤Ë¤Ä¤¤¤Æ¤ª¿Ò¤Í¤·¤Þ¤¹.
237 ʸ½ñ̾ `$name' ¤Î(ËÝÌõ)ºî¶È¤ò $date ¤ËͽÌ󤵤ì¤Æ¤ª¤ê,
238 ¸½ºßͽÌóÆü°Ê¹ß $days Æü¤¬·Ð²á¤·¤Æ¤¤¤Þ¤¹.
240 ºî¶È¤Î¾õ¶·¤Ï¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«? ͽÌó¤Î°ìö¼è¤ê¾Ã¤·, ¤Ê¤¤¤·¤ÏͽÌó¤·Ä¾¤·
243 ¤Ê¤ª, ¤³¤Î¥á¡¼¥ë¤¬¥É¥á¥¤¥óÊѹ¹¤Ê¤É¤ÇÆϤ«¤Ê¤«¤Ã¤¿¾ì¹ç,
244 ¤¢¤ë¤¤¤Ï 1 ¥ö·î·Ð¤Ã¤Æ¤â¤³¤Î¥á¡¼¥ë¤Ø¤ÎÊÖÅú¤¬¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï,
245 ºî¶È¤¬Ää»ß¾õÂ֤ˤ¢¤ë¤È¤ß¤Ê¤·, ¾¤ÎÊý¤¬Í½Ìó¤Ç¤¤ë¤è¤¦
246 ¤¢¤Ê¤¿¤Î $name ¤Ë´Ø¤¹¤ëºî¶ÈͽÌó¤òËõ¾Ã¤¤¤¿¤·¤Þ¤¹.
248 ¤³¤Î¥á¡¼¥ë¤ËÊÖÅú¤¹¤ë¤È JF\@linux.or.jp ¤ËÆϤ¯¤³¤È¤Ë¤Ê¤ê¤Þ¤¹.
249 ¤³¤ì¤Ï, ºî¶È¤Î¿Ê¹Ô¾õ¶·¤ò JF ¥á¥ó¥ÐÁ´°÷¤Çǧ¼±¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹.
251 ¤½¤ì¤Ç¤Ï,²¼¤Î¶õÇòÉôʬ¤òËä¤á¤¿·Á¤Ç¤ÎÊÖÅú¤ò¤ª¤Í¤¬¤¤¤¤¤¿¤·¤Þ¤¹.
255 ͽÌó¤ò¤É¤¦¤¹¤ë¤«? : ͽÌó·Ñ³ / ͽÌó¼è¤ê¾Ã¤· / ºÆÅÙͽÌó
257 [·Ñ³¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.¤¢¤È¡û¡û¹Ô¤Ê¤Î¤Ç,¢¢¢¢% ½ª¤ï¤Ã¤Æ¤¤¤Þ¤¹]
258 [¼è¤ê¾Ã¤·¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.¤½¤ÎÉôʬ¤Þ¤Ç¤òźÉÕ]
259 [ºÆͽÌó¤Ç¤ÎÎã - Âèn¾Ï¤Þ¤ÇÌõλ.ºÆÅÙͽÌó¤·¤Þ¤¹]
261 JF ¤Ï¥Ü¥é¥ó¥¿¥ê¤Ê³èÆ°¤Ç¤¹¤Î¤Ç, ÅÓÃæ¤Çºî¶È¤Ç¤¤Ê¤¯¤Ê¤ë¾õ¶·¤Ë´Ù¤Ã¤¿¤ê
262 ¤¹¤ë¤³¤È¤ÏÅöÁ³¤¢¤êÆÀ¤Þ¤¹. ¤³¤ì¤Ï²¿¤éÃѤ¸¤ë¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó.
263 ¤·¤«¤·, ¤½¤¦¤¤¤Ã¤¿¾ì¹ç¤Ï, ¤Ê¤ë¤Ù¤¯Áá¤á¤Ë¡Ö¼ê¤ò¾å¤²¤Æ¡×, ¾¤Î¥á¥ó¥Ð¤Ø¤Î
264 ºî¶È¤Î°Ñ¾ù¤ò¤ª´ê¤¤¤·¤Þ¤¹.
266 ¤Þ¤¿, ͽÌó¤ò¼è¤ê¾Ã¤µ¤ì¤ë¾ì¹ç¤Ï, ¤½¤ì¤Þ¤Ç¤ÎÌõʸ¤ò JF ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë
267 ή¤¹¤Ê¤É¤·¤Æ, ¤Ç¤¤ë¸Â¤êºî¶È·ë²Ì¤ò¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¯¤À¤µ¤ë¤è¤¦¤ª´ê¤¤¤¤¤¿
270 JF Project ¤Îºî¶È±ß³ê¤Î¤¿¤á, ¤¼¤Ò¤´¶¨ÎϤò¤ª´ê¤¤¤¤¤¿¤·¤Þ¤¹.
279 Usage: check-old-reservation [options] reserved.list
281 -v verbose: also print generated mail message to stdout
282 -m do mail the messages