#!/usr/bin/perl #------------------------------- # padedit.cgi (ShiftJIS) # 2001.11. 6 MIYAMORI Yoshimasa # 1999. 2.13 MIYAMORI Yoshimasa # (kan_ta@amcsys.com) #------------------------------- require 'padres.pl'; require $myReqPadlib; require $myReqJcode; $myTitle = 'padedit: ' . $padresMyTitle; $myUrl = $padresMyUrl . 'padedit.cgi'; &main; exit; sub main { if ($ENV{'REQUEST_METHOD'} eq 'HEAD') { &dispMsg('Request method: HEAD.'); return; } if (&chkBusy) { &dispMsg($myMsgBusy); return; } &setBusy(1); if (&chkEnv) { &dispMsg($myMsgDeny); &setBusy(0); return; } &parseQry(*in); if (&chkAuth($in{'passwd'})) { &dispMsg($myMsgPassword); &setBusy(0); return; } &putEdit if ($in{'body'}); &dispEdit; &setBusy(0); return; } # 内容を書きかえる. sub putEdit { local($fileName, $num, $line); local($flg); if ($in{'log'} eq 'name') { $fileName = $nameFile; } elsif (($in{'num'} eq 'top') || ($in{'num'} eq 'bottom')) { if ($in{'log'} eq 'pad') { $fileName = $padFile; } else { if ($in{'log'} eq 'z') { $fileName = $logFile[0]; } else { $fileName = $logFile[$in{'log'}]; } } } else { if (&isInPad($in{'num'})) { $fileName = $padFile; } else { $fileName = $logFile[&getLogNum($in{'num'})]; } } open(FILE, "$myIn <$fileName |") || &exitPadCgi('error: putEdit().'); open(TMP, "|$myOut >$tmpFile") || &exitPadCgi('error: putEdit().'); if ($in{'num'} eq 'top') { $flg = 1; while () { $line = $_; if ($flg == 0) { print TMP $line; } else { if (/^$PAD_TOP/io) { $flg = 0; print TMP $in{'body'}, "\n"; print TMP $line; } else { ; #削除. } } } } elsif ($in{'num'} eq 'bottom') { $flg = 0; while () { $line = $_; if ($flg == 0) { if (/^$PAD_BOTTOM/io) { $flg = 1; } print TMP $line; } else { ; #削除. } } print TMP $in{'body'}, "\n"; } elsif ($in{'num'} eq 'name') { $flg = 0; while () { $line = $_; if ($flg == 0) { if (/^$PAD_TOP/io) { $flg = 1; } print TMP $line; } else { if (/^$PAD_BOTTOM/io) { $flg = 0; print TMP $in{'body'}, "\n"; print TMP $line; } else { ; #削除. } } } } else { $flg = 0; while () { $line = $_; if ($flg == 0) { if (/^/) { $num = $1; if ($num == $in{'num'}) { $flg = 1; } } print TMP $line; } else { if ($line =~ /^/i) { $flg = 0; print TMP $in{'body'}, "\n"; print TMP $line; } else { ; #削除. } } } } close TMP; close FILE; $s = "mv $tmpFile $fileName"; system($s); chmod $myChmod, $fileName; } # edit用のフォームを表示. sub dispEdit { local($fileName, $num, $line); local($i, $s, $text); if (!$in{'log'}) { $in{'log'} = 'pad'; $fileName = $padFile; } elsif ($in{'log'} eq 'pad') { $fileName = $padFile; } elsif ($in{'log'} eq 'name') { $fileName = $nameFile; } else { if ($in{'log'} eq 'z') { $fileName = $logFile[0]; } else { $fileName = $logFile[$in{'log'}]; } unless (-f $fileName) { &dispMsg($myMsgLogNotFound); return; } } open(FILE, "$myIn <$fileName |") || &exitPadCgi('error: dispEdit().'); print <<"EndOfFile"; Content-type: text/html\n $myHead $myTitle $myBody $myMsgBack
EndOfFile if ($myPadLimit == 100) { print <<"EndOfFile"; EndOfFile } else { print <<"EndOfFile"; EndOfFile } print <<"EndOfFile";

$fileName


EndOfFile $text = ''; while () { last if (/^$PAD_TOP/io); $text .= $_; } $text = &toNum($text); print <<"EndOfFile";


EndOfFile if ($in{'log'} eq 'name') { $text = ''; while () { last if (/^$PAD_BOTTOM/io); $text .= $_; } $text = &toNum($text); print <<"EndOfFile";


EndOfFile } else { while () { last if (/^$PAD_BOTTOM/io); $line = $_; if (/^/) { $num = $1; $text = ''; } elsif ($line =~ /^/i) { if ($num == $1) { $text = &toNum($text); print <<"EndOfFile";


EndOfFile } } else { $text .= $line; } } } $text = ''; while () { $text .= $_; } close FILE; $text = &toNum($text); print <<"EndOfFile";


EndOfFile }