#!/usr/bin/perl # #clist.cgi #ジャンル別アンケートへのリンクCGI require './jcodeLE.pl'; require './prei.cgi'; $| = 1; &winit;&noaxschk; &init;&decode;&jikan; &html; exit; ################################################## sub init{ $title = 'アンケートカテゴリ一覧'; $display = 4; #箱の最大表示数 #ディレクトリとジャンル名を書く。ディレクトリが無い場合は単に無視される。 $catename{'.'} = '総合'; $catename{'comic'} = '漫画'; $catename{'computer'} = 'コンピュータ'; $catename{'game'} = 'ゲーム'; $catename{'movie'} = '映画'; $catename{'music'} = '音楽'; $catename{'military'} = '軍事'; $catename{'news'} = 'ニュース'; $catename{'sport'} = 'スポーツ'; }#init END ################################################## sub html { my($bbslink); $bbslink = "[$bbsname]" if($bbscgi); print "Content-type: text/html\n\n"; print <<"_HTML_"; $title $metacode $bodys $title

[インデックス] $bbslink
_HTML_ &listing;#カテゴリのリスト作成 print <<"_HTML_";
$original _HTML_ }#html END ################################################## sub listing{ my(@readlist,@ctlist,@roomlist,%dirday,%fileday); my($ctdir,$filedata,$datedata,$total,$count,$dir,$files,$boxes,$file,$f,$room,$title,$chkkey,$ddata); my($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst); opendir(DIR,"."); @readlist = grep(/\w+/, readdir(DIR)); closedir(DIR); push(@readlist,"."); foreach $ctdir (@readlist) { $filedata = -M "./$ctdir/$logdir"; if($hotlist){ #更新日付がhotlist以内のものをピックアップ push(@ctlist,$ctdir) if ($filedata < $hotlist); }else{ push(@ctlist,$ctdir); } $dirday{$ctdir} = $filedata; } #@ctlist = sort { $dirday{$a} <=> $dirday{$b} } @ctlist; print <<"_HTML_";
  • ${date}現在の各ジャンルのリスト
  • 日付、時刻は最終書き込み時です。
  • 先頭の◇をクリックすると新しくブラウザが開くかも。
  • _HTML_ print "
      \n"; foreach $ctdir(@ctlist) { next if($catename{$ctdir} eq ''); #カテゴリに含まれてなければ無視 $dir = "./$ctdir/$logdir"; next if(!(-d $dir)); #ディレクトリでなければ無視 opendir(DIR, $dir); @files = grep(/log\.\d+\.cgi/, readdir(DIR)); close(DB); $boxes = @files; @roomlist =(); if($boxes > 0){ $filedata = 1000; foreach $room (@files){ $room =~ s/log\.(\d+)\.cgi/$1/; $f = -M "./$logdir/log.$room.cgi"; $fileday{$room} = $f; push(@roomlist,$room); $filedata = $f if($f < $filedata); #最新の箱を探す } }else{ $filedata = $dirday{$ctdir}; #箱が無ければディレクトリの更新日時を使う } @roomlist = sort { $fileday{$a} <=> $fileday{$b} } @roomlist; #更新順 ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($times-$filedata*24*60*60); $sec = "0$sec" if ($sec < 10);$min = "0$min" if ($min < 10);$month++; if($filedata < 0.5 ){ $dates = "$month/$mday $hour時$min分<\/FONT>"; }else{ $dates = "$month/$mday $hour時$min分"; } print "
      \n"; $link = "./$ctdir/$cgi_list"; print " \n"; print "$catename{$ctdir}"; print "$dates: $boxes箱
      \n"; print "
        " if($boxes > 0); foreach $room (@roomlist) { last if($room eq ''); $file = "./$dir/log.$room.cgi"; open(DB, $file); @lines = ; close(DB); $set=shift(@lines); ($title,$chkkey,$ddata) = split(/:#/,$set); #list.cgiと同じ $title = unpack("A80",$title); $title = '?' if($title eq ''); $filedata = -M "./$logdir/log.$room.cgi"; $datedata = $ddata - $filedata; $hatusuu = @lines; ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($times-$filedata*24*60*60); $sec = "0$sec" if ($sec < 10);$min = "0$min" if ($min < 10);$month++; if($datedata < 1){ $dates = "$month/$mday $hour時$min分<\/FONT>"; }else{ if($filedata < 0.5 ){ $dates = "$month/$mday $hour時$min分<\/FONT>"; }else{ $dates = "$month/$mday $hour時$min分"; } } print "
        \n"; $datedata = int($datedata*100)/100; $link = "./$ctdir/$cgi_log?room=$room"; # print " \n"; print "$title"; print "($room)$dates: $hatusuu投票: 残り$datedata日
        \n"; } print "
      " if($boxes > 0); }#foreach print "
      \n"; }#listing END ################################################## sub decode { my($brnum); if ($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }else{ $buffer = $ENV{'QUERY_STRING'}; } &decodearg($buffer); $page = $FORM{'page'};$page = int($page); $hotlist = $FORM{'h'};$hotlist = '0' if($hotlist eq ''); $rev = $FORM{'r'};$rev = 'on' if($rev eq ''); $lmax = $FORM{'lm'};$lmax = $limax if($lmax < 1);$lmax = int($lmax); }#decode END ################################################## __END__