#!/usr/bin/perl ############################################################################### # (SS)C-BOARD v3.5.4 2003.09.01 by N.Hirai / ssc-board@skullysoft.com # # C-BOARD?̃I???W?i???? t_kimata?????J??????܂????A???o?[?W?????? # ?X?J???[?\?t?g( http://www.skullysoft.com/ )?ɂ??A?s??̏C???????s???? # ?????łł??B # ???o?[?W?????̃??C?Z???X?̓I???W?i???Ə??????܂??B # ???쌠?̓I???W?i???\?[?X?????? T.Kimata ???A?????????͉????ҁi?????j?ɂ???? # ???B # # ?I???W?i???̃??C?Z???X?́??̒ʂ?ł????A??҂ւ̒??ڂ̖₢???킹?͌??ւƂ??? # ???B ############################################################################### # Copyright (C) 2000 T.Kimata # http://www.nk.rim.or.jp/~t_kimata/cgi/ # # All rights reserved. # # This software is provided 'as-is', without any express or implied warranty. # In no event will the authors be held liable for any damages arising from the # use of this software. # # Permission is granted to anyone to use this software for any purpose, # including commercial applications, and to alter it and redistribute it # freely, subject to the following restrictions: # # 1. The origin of this software must not be misrepresented; you must not claim # that you wrote the original software. If you use this software in a product, # an acknowledgment in the product documentation would be appreciated but is # not required. # # 2. Altered source versions must be plainly marked as such, and must not be # misrepresented as being the original software. # # 3. This notice may not be removed or altered from any source distribution. ############################################################################### # # ?u?g?N?g?N?v???A?w?b?_?[???t?B???^?????O????T?[?o?[?̏ꍇ?̓R?????g?A?E?g # ?i???̏ꍇ?A?????̓s????L???b?V?????̋@?\???g???Ȃ??Ȃ?܂??j # $::SYS{'liar'} = 1; #?????????????????????????????????????????????????????????????????????????????? # # ?J?????g?f?B???N?g???̈ړ??iIIS, mod_perl?p?j # BEGIN { # chdir 'c:/www/develop/c-board/c-board'; # } #?????????????????????????????????????????????????????????????????????????????? #???? ?????? &::init; #???? ?A?N?Z?X???`?F?b?N if ($CNF::permission{'bse'}{'mode'}) { require './cmd/prm.pl'; &PERMISSION::check('bse'); } #?????????????????????????????????????????????????????????????????????????????? #?????R?}???h???? #?????????????????????????????????????????????????????????????????????????????? #???? ?g?ъ֘A if ($::FLAG{'mobile'}{'mode'} && (($::FORM{'cmd'} eq 'nmb') || ($::FORM{'cmd'} eq 'tpc') || ($::FORM{'cmd'} eq 'one'))) { &MOBILE::view; } elsif ($::FLAG{'mobile'}{'mode'} && ($::FORM{'cmd'} eq 'dln')) { &MOBILE::delete_input; } elsif ($::FLAG{'mobile'}{'mode'} && !length($::FORM{'cmd'}) && (index($ENV{'PATH_INFO'}, '/e_') != 0)) { &MOBILE::menu; } #???? ?L???\???֘A elsif (($::FORM{'cmd'} eq 'one') || ($::FORM{'cmd'} eq 'ntr') || ($::FORM{'cmd'} eq 'tre') || ($::FORM{'cmd'} eq 'thr') || ($::FORM{'cmd'} eq 'all') || ($::FORM{'cmd'} eq 'tpc') || ($::FORM{'cmd'} eq 'nmb')) { require './cmd/msg.pl'; &MESSAGE::view; } elsif ($::FORM{'cmd'} eq 'jmp') { require './cmd/msg.pl'; &MESSAGE::jump; } elsif ($::FORM{'cmd'} eq 'msd') { require './cmd/msg.pl'; &MESSAGE::data; } #???? ???e?֘A elsif ($::FORM{'cmd'} eq 'pst') { require './cmd/pst.pl'; &POST::write; } elsif ($::FORM{'cmd'} eq 'psn') { require './cmd/pst.pl'; &POST::input; } #???? ?????֘A elsif ($::FORM{'cmd'} eq 'srn') { require './cmd/src.pl'; &SEARCH::input; } elsif ($::FORM{'cmd'} eq 'src') { require './cmd/src.pl'; &SEARCH::result; } #???? ?J?X?^?}?C?Y?i?K??ҁj?֘A elsif ($::FORM{'cmd'} eq 'csn') { require './cmd/cst.pl'; &CUSTOM::input; } elsif ($::FORM{'cmd'} eq 'cst') { require './cmd/cst.pl'; &CUSTOM::write; } #???? ???[???F?؊֘A elsif ($::FORM{'cmd'} eq 'mbn') { require './cmd/mmb.pl'; &MEMBER::input; } elsif ($::FORM{'cmd'} eq 'mbr') { require './cmd/mmb.pl'; &MEMBER::regist; } elsif ($::FORM{'cmd'} eq 'mlw') { require './cmd/mmb.pl'; &MEMBER::write; } #???? ?ߋ????O?C???f?b?N?X elsif ($::FORM{'cmd'} eq 'log') { require './cmd/log.pl'; &LOG::index; } #???? ?????[???֘A elsif ($::FORM{'cmd'} eq 'hmn') { require './cmd/hml.pl'; &HIDDEN_MAIL::input; } elsif ($::FORM{'cmd'} eq 'hml') { require './cmd/hml.pl'; &HIDDEN_MAIL::send; } #???? ?폜?֘A elsif ($::FORM{'cmd'} eq 'dlm') { require './cmd/msg.pl'; &MESSAGE::delete; } #???? ?{?????J?E???g?E???NJǗ??????֘A elsif ($::FORM{'cmd'} eq 'rdw') { require './cmd/rad.pl'; &READ::write; } #???? ?Ǘ??җp?c?[???֘A elsif ($::FORM{'cmd'} eq 'lgn') { require './cmd/lgn.pl'; &LOGIN::input; } elsif ($::FORM{'cmd'} eq 'lgw') { require './cmd/lgn.pl'; &LOGIN::write; } elsif ($::FORM{'cmd'} eq 'stn') { require './cmd/stp.pl'; &SETUP::input; } elsif ($::FORM{'cmd'} eq 'stp') { require './cmd/stp.pl'; &SETUP::write; } elsif ($::FORM{'cmd'} eq 'syn') { require './cmd/sty.pl'; &STYLE::input; } elsif ($::FORM{'cmd'} eq 'sty') { require './cmd/sty.pl'; &STYLE::write; } elsif ($::FORM{'cmd'} eq 'mmn') { require './cmd/mst.pl'; &MASTER::manage; } elsif ($::FORM{'cmd'} eq 'bck') { require './cmd/mst.pl'; &MASTER::backup; } elsif ($::FORM{'cmd'} eq 'mdl') { require './cmd/mst.pl'; &MASTER::delete; } elsif ($::FORM{'cmd'} eq 'mdn') { require './cmd/mst.pl'; &MASTER::edit_input; } elsif ($::FORM{'cmd'} eq 'mdt') { require './cmd/mst.pl'; &MASTER::edit; } elsif ($::FORM{'cmd'} eq 'plt') { require './cmd/plt.pl'; &PALLET::view; } elsif ($::FORM{'cmd'} eq 'mnb') { require './cmd/mnb.pl'; &BOARD::manage; } elsif ($::FORM{'cmd'} eq 'mkb') { require './cmd/mnb.pl'; &BOARD::make; } elsif ($::FORM{'cmd'} eq 'dlb') { require './cmd/mnb.pl'; &BOARD::delete; } elsif ($::FORM{'cmd'} eq 'rst') { require './cmd/rst.pl'; &RESTORE::execution; } #???? ?????L???O?֘A elsif ($::FORM{'cmd'} eq 'rnr') { require './cmd/rnk.pl'; &RANK::read; } elsif ($::FORM{'cmd'} eq 'rnf') { require './cmd/rnk.pl'; &RANK::frequency; } elsif ($::FORM{'cmd'} eq 'rnk') { require './cmd/rnk.pl'; &RANK::keyword; } #???? ?A?N?Z?X???O?E?J?E???^?֘A elsif ($::FORM{'cmd'} eq 'csd') { require './cmd/ces.pl'; &ACCESS::data; } elsif ($::FORM{'cmd'} eq 'csx') { require './cmd/ces.pl'; &ACCESS::xml; } elsif ($::FORM{'cmd'} eq 'csw') { require './cmd/ces.pl'; &ACCESS::write; } elsif ($::FORM{'cmd'} eq 'csv') { require './cmd/ces.pl'; &ACCESS::view; } elsif ($::FORM{'cmd'} eq 'csl') { require './cmd/ces.pl'; &ACCESS::log; } elsif ($::FORM{'cmd'} eq 'csp') { require './cmd/ces.pl'; &ACCESS::applet; } #???? ?L?[???[?h?֘A elsif ($::FORM{'cmd'} eq 'kyv') { require './cmd/kyw.pl'; &KEYWORD::view; } elsif ($::FORM{'cmd'} eq 'kys') { require './cmd/kyw.pl'; &KEYWORD::search; } #???? ?b?l?s?o?? elsif (exists $::FORM{'point'}) { require './cmd/cmt.pl'; $::FLAG{'incm'} = 1; &CMT::view; } #???? ???̑??e??o?͊֘A elsif ($::FORM{'cmd'} eq 'mge') { &BASE::output('image'); } elsif ($::FORM{'cmd'} eq 'fle') { &BASE::output('file'); } elsif ($::FORM{'cmd'} eq 'mgv') { require './cmd/mge.pl'; &IMAGE::view; } elsif ($::FORM{'cmd'} eq 'lct') { &BASE::location; } elsif ($::FORM{'cmd'} eq 'css') { &BASE::css; } elsif ($::FORM{'cmd'} eq 'jar') { &BASE::jar; } elsif ($::FORM{'cmd'} eq 'qvh') { require './cmd/qua.pl'; &AQUA::view_hue; } elsif ($::FORM{'cmd'} eq 'xms') { require './cmd/xsl.pl'; &XSL::message; } elsif ($::FORM{'cmd'} eq 'xcs') { require './cmd/xsl.pl'; &XSL::access; } elsif ($::FORM{'cmd'} eq 'xrs') { require './cmd/xsl.pl'; &XSL::rss; } elsif ($::FORM{'cmd'} eq 'nvv') { require './cmd/env.pl'; &ENV::view; } elsif ($::FORM{'cmd'} eq 'smv') { require './cmd/smr.pl'; &SUMMARY::view; } elsif ($::FORM{'cmd'} eq 'rss') { require './cmd/rss.pl'; &RSS::view; } elsif (($::FORM{'cmd'} eq 'mji') || (index($ENV{'PATH_INFO'}, '/e_') == 0)) { require './cmd/mji.pl'; &EMOJI::view; } # HELP elsif ($::FORM{'cmd'} eq 'hlp') { require './cmd/hlp.pl'; &HLP::view; } #???? ?L???\?? else { require './cmd/msg.pl'; $::FORM{'cmd'} = $::COOKIE{'default'}; &MESSAGE::view; } exit; #?????????????????????????????????????????????????????????????????????????????? package main; #?????????????????????????????????????????????????????????????????????????????? #?? ?????? #?????????????????????????????????????????????????????????????????????????????? sub init { #???? ?o?[?W??????? $::C_BOARD_LINK = 'http://www.skullysoft.com/'; $::VERSION = '3.5.4'; $::VERSION_LINK = 'http://www.skullysoft.com/'; #???? ?????? undef %::FORM; undef %::FLAG; undef %::COOKIE; #???? ???샂?[?h $::FLAG{'debug'} = 0; # ?i0: ?ʏ탂?[?h 1:?ǐՃ??[?h 2:?J?????[?h?j #???? ???m?̃??b?N???[?h $::FLAG{'lock'}{'mode'} = [qw(dbg ces pst msg slg rad stp)]; #???? mod_perl?p?i?uLocation?v?̎????u200?v????j (index($ENV{'GATEWAY_INTERFACE'}, 'CGI-Perl/') == 0) && !$ENV{'PERL_SEND_HEADER'} && (print ($ENV{'SERVER_PROTOCOL'} || 'HTTP/1.0'), "200 OK\n"); #???? ???Ԃ??Z?b?g $::FLAG{'time'} = time(); #???? ?v???b?g?t?H?[?????Z?b?g &::set_platform; #???? ?f?o?b?O?p ($::FLAG{'debug'} == 2) && &::debug_init; #???? ???C?u??????ǂݍ??? do './cmd/bse.pl'; do './config.cgi'; $::FLAG{'base'} = '.'; #???? ???N?G?X?g??ǂݍ??? &::read_request; #???? ?X?L????ݒ? &::skin; #???? ?N?b?L?[?????? &::cookie; #???? ?Ǘ??l?`?F?b?N?i?Z?b?g?A?b?v?p?ł͂Ȃ??j require './cmd/etc.pl'; ((&ETC::name_matching($::FORM{'name'},$CNF::master{'name'},$CNF::master{'mode'})) && ($::FORM{'key'} eq $CNF::master{'key'})) && ($::FLAG{'master'} = 1); } #?????????????????????????????????????????????????????????????????????????????? #?? ?v???b?g?t?H?[?????Z?b?g #?? ???擪??v "== 0" ?A??????v "!= -1" #?????????????????????????????????????????????????????????????????????????????? sub set_platform { ($^O eq 'MSWin32') && ($::FLAG{'mswin'} = 1); $ENV{'HTTP_USER_AGENT'} =~ s/\s+/ /g; if (index($ENV{'HTTP_USER_AGENT'}, 'DoCoMo') == 0) { $::FLAG{'mobile'}{'imode'} = 1; } elsif (index($ENV{'HTTP_USER_AGENT'}, 'J-PHONE') == 0) { $::FLAG{'mobile'}{'jsky'} = 1; } elsif (index($ENV{'HTTP_USER_AGENT'},'KDDI') == 0) { $::FLAG{'mobile'}{'hdml'} = 1; } elsif (index($ENV{'HTTP_USER_AGENT'}, 'UP.Browser') == 0) { $::FLAG{'mobile'}{'hdml'} = 1; } elsif (index($ENV{'HTTP_USER_AGENT'}, 'ASTEL') == 0) { $::FLAG{'mobile'}{'astel'} = 1; } elsif (index($ENV{'HTTP_USER_AGENT'}, 'DDIPOCKET') != -1) { $::FLAG{'mobile'}{'imode'} = 1; } $::FLAG{'mobile'} && ($::FLAG{'mobile'}{'mode'} = 1); } #?????????????????????????????????????????????????????????????????????????????? #?? ?N?b?L?[?????? #?????????????????????????????????????????????????????????????????????????????? sub cookie { &CGI::read_cookie($CNF::cookie{'name'}); map($::COOKIE{$_} ||= $CNF::view{'page'}{$_}{'number'} || 10, qw(all mbl tpc tre thr nmb)); $::COOKIE{'mmn'} = $CNF::view{'page'}{'mmn'}{'number'}; $::COOKIE{'default'} ||= $CNF::view{'default'}{'mode'}; length($::COOKIE{'number'}) or ($::COOKIE{'number'} = $CNF::view{'number'}{'mode'}); length($::COOKIE{'read'}) or ($::COOKIE{'read'} = $CNF::view{'read'}{'mode'}); $::COOKIE{'new'} ||= $CNF::view{'new'}{'day'}; $::COOKIE{'user_id'} ||= &COMMON::make_id; } #?????????????????????????????????????????????????????????????????????????????? #?? ?N???C?A???g?ɍ??????X?L????ݒ? #?????????????????????????????????????????????????????????????????????????????? sub skin { if ($::FLAG{'mobile'}{'hdml'}) { do './cmd/hdm.pl'; $::FLAG{'template'} = './style/hdml'; *BASE::init = *MOBILE::init; # ! } elsif ($::FLAG{'mobile'}{'mode'}) { do './cmd/mbl.pl'; $::FLAG{'template'} = './style/mobile'; } elsif (length($CNF::skin{'type'}) && -e "./style/$CNF::skin{'type'}") { $::FLAG{'template'} = "./style/$CNF::skin{'type'}"; } else { $::FLAG{'template'} = "./style";} do "$::FLAG{'template'}/bse.txt"; } #?????????????????????????????????????????????????????????????????????????????? #?? ?ݒ?t?@?C????ǂݍ??? #?????????????????????????????????????????????????????????????????????????????? sub read_cnf { ($::FLAG{'read_cnf'} || $::FORM{'id'} !~ /^\w+$/) && return; -e "$CNF::place{'data'}{'path'}/$::FORM{'id'}/config.cgi" or &::error(\"?w?肳?ꂽ?h?c($::FORM{'id'})?̌f???‚͑??݂??܂???B"); $::FLAG{'base'} = "$CNF::place{'data'}{'path'}/$::FORM{'id'}"; untie %CNF::post; untie %CNF::mail; untie %CNF::tag; untie %CNF::upload; untie %CNF::mobile; do "$::FLAG{'base'}/config.cgi"; $::FLAG{'read_cnf'} = 1; } #?????????????????????????????????????????????????????????????????????????????? #?? ???M?f?[?^?ǂݍ??? #?????????????????????????????????????????????????????????????????????????????? sub read_request { #???? ?f???‚h?c???m?? &::read_request_sub(\$ENV{'QUERY_STRING'}); &::read_cnf; #???? ???e???\?b?h?`?F?b?N (($::FORM{'cmd'} eq 'pst') || ($::FORM{'cmd'} eq 'hml')) && !$::FLAG{'mobile'}{'mode'} && &::error(\'???e???\?b?h???s???ł??B'); #???? ???{?ꓙ???܂܂??”\?????Ȃ??? (($ENV{'REQUEST_METHOD'} eq 'POST') || ($::FORM{'cmd'} eq 'src') || ($::FORM{'cmd'} eq 'mbr') || ($::FORM{'cmd'} eq 'pst') || ($::FORM{'cmd'} eq 'kys')) or return; #???? ?o?n?r?s?f?[?^?ǂݍ??? &::read_post_request; #???? ?f?[?^??%::FORM?ɓǂݍ??? sub read_request_sub { my $r_buffer = shift; foreach (split(/[&;]/, ${$r_buffer})) { my($name, $value) = split(/=/, $_, 2); &CGI::url_decode(\$value); $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; (($name ne 'id') && defined $::FORM{$name}) ? ($::FORM{$name} .= "\t$value") : ($::FORM{$name} = $value); } } } #?????????????????????????????????????????????????????????????????????????????? #?? ?f?o?b?O?p?̏????? #?????????????????????????????????????????????????????????????????????????????? sub debug_init { eval('$::FLAG{\'start\'} = [(times)[0, 1]]'); length($ENV{'HTTP_USER_AGENT'}) && return; $ENV{'HTTP_USER_AGENT'} ||= 'Mozilla/4.0 (Win98)'; $ENV{'QUERY_STRING'} ||= "cmd=$ARGV[0];id=test"; # and more... } #?????????????????????????????????????????????????????????????????????????????? #?? ?????? #?????????????????????????????????????????????????????????????????????????????? BEGIN { require './lib/cmn.pl'; require './lib/cgi.pl'; } #?????????????????????????????????????????????????????????????????????????????? #?? ??n?? #?????????????????????????????????????????????????????????????????????????????? END { map(&::unlock($_), keys %{$::FLAG{'lock'}}); } #?????????????????????????????????????????????????????????????????????????????? #?? ?I?[?g???[?_?[ #?????????????????????????????????????????????????????????????????????????????? sub AUTOLOAD { $::FLAG{'autoload'}++ && exit; # ???????[?v?h?~ eval <<'__SUB__'; #?????????????????????????????????????????????????????????????????????????????? #?? ???b?N #?????????????????????????????????????????????????????????????????????????????? sub lock { my $mode = shift; if (length($mode) == 3) { grep($mode eq $_, @{$::FLAG{'lock'}{'mode'}}) or &::error(\'???m?̃??b?N???[?h?ł??B'); my $time = time(); my $try = $CNF::lock{'try'}{'number'}; my $lock = "$CNF::place{'data'}{'path'}/$mode\_lock_$time"; while ($try--) { if (rename("$CNF::place{'data'}{'path'}/$mode\_lock", $lock)) { return($::FLAG{'lock'}{$mode} = $lock); } select(undef, undef, undef, 0.05); } opendir(DIR, $CNF::place{'data'}{'path'}) or return(0); my $old_lock = (grep(/^$mode\_lock_\d+$/, readdir(DIR)))[0]; closedir(DIR); $old_lock or return(0); my $old_time = ($old_lock =~ /^$mode\_lock_(\d+)$/)[0]; if ((($time - $old_time) > 10) && rename("$CNF::place{'data'}{'path'}/$old_lock", $lock)) { return($::FLAG{'lock'}{$mode} = $lock); } else { return(0); } } else { # ?L???b?V???t?@?C???p # ?Ȃ?ׂ??Փ˂????炷???߂ɁA?t?@?C?????ƂɃ??b?N???? #???? ???b?N???Â??ꍇ?͉????i???j ((-M "$CNF::place{'data'}{'path'}/$mode\_lock") * 288 > 1) && &::unlock($mode); #???? ???b?N my $try = $CNF::lock{'try'}{'number'}; if ($CNF::lock{'mode'}) { while (!symlink($$, "$CNF::place{'data'}{'path'}/$mode\_lock")) { --$try or return(0); select(undef, undef, undef, 0.05); } } else { while (!mkdir("$CNF::place{'data'}{'path'}/$mode\_lock", 0666)) { --$try or return(0); select(undef, undef, undef, 0.05); } } $::FLAG{'lock'}{$mode} = 1; return(1); } } #?????????????????????????????????????????????????????????????????????????????? #?? ???b?N???? #?????????????????????????????????????????????????????????????????????????????? sub unlock { my $mode = shift; if (length($mode) == 3) { exists $::FLAG{'lock'}{$mode} or return; rename($::FLAG{'lock'}{$mode}, "$CNF::place{'data'}{'path'}/$mode\_lock"); } else { # ?L???b?V???t?@?C???p $CNF::lock{'mode'} ? unlink("$CNF::place{'data'}{'path'}/$mode\_lock") : rmdir("$CNF::place{'data'}{'path'}/$mode\_lock"); } delete $::FLAG{'lock'}{$mode}; } #?????????????????????????????????????????????????????????????????????????????? #?? ?o?n?r?s?f?[?^?ǂݍ??? #?????????????????????????????????????????????????????????????????????????????? sub read_post_request{ require './lib/str.pl'; #???? ???炩???ߓ??e?f?[?^?̑傫?????`?F?b?N ($ENV{'CONTENT_LENGTH'} > (($CNF::upload{'size'}{'max'} * $CNF::upload{'enable'}{'number'}) + $CNF::post{'body'}{'max'} + 20480)) && &::error(\'???e?f?[?^???傫?????܂??B'); #???? ?ǂݍ??? if ($ENV{'REQUEST_METHOD'} eq 'POST') { if ((index($ENV{'CONTENT_TYPE'}, 'multipart/form-data') == 0)) { require './cmd/mlf.pl'; &MULTIPART::read; } else { my $buf; read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); &::read_request_sub(\$buf); } &::read_cnf; } my $code = &STRING::code(\$::FORM{'kanji'}); delete $::FORM{'kanji'}; foreach (keys %::FORM) { $::FORM{$_} =~ s/\r\n/\n/g; $::FORM{$_} =~ s/\r/\n/g; if (($::FORM{'cmd'} ne 'stp') && ($::FORM{'cmd'} ne 'sty')) { $::FORM{$_} =~ s/\t/?@?@?@?@/g; $::FORM{$_} =~ s/ /?@/g; } &STRING::etc2sjis(\$::FORM{$_}, $code); } &STRING::undef_table; } #?????????????????????????????????????????????????????????????????????????????? #?? ?f?o?b?O?p?????L?^ #?????????????????????????????????????????????????????????????????????????????? sub debug { my $name = shift; my $r_value = shift; &::lock('dbg') or return; open(DBG, "+>>./$CNF::place{'data'}{'path'}/debug.cgi") or return; print DBG '??' x 38, "\n??$name\n${$r_value}\n"; close(DBG); &::unlock('dbg'); } #?????????????????????????????????????????????????????????????????????????????? #?? ?G???[?\?? #?????????????????????????????????????????????????????????????????????????????? sub error { my $r_error = shift; (++$::FLAG{'error'} > 25) && exit; my($file, $line) = (caller)[1, 2]; my $caller = "?m$file($line)?n"; ($::FLAG{'debug'} == 2) or ($caller = ""); if ($::FLAG{'file'}) { foreach (@{$::FLAG{'file'}}) { unlink("$CNF::place{'file'}{'path'}/${$_}{'name'}"); } undef $::FLAG{'file'}; } $::FLAG{'template'} or &::skin; do "$::FLAG{'template'}/ror.txt"; if ($::FLAG{'http_header'}) { &DESIGN::small_error($r_error, $caller);} else { select(STDOUT); &BASE::head2('ror'); &DESIGN::error($r_error, $caller); &BASE::foot2('ror'); exit; } } __SUB__ length($@) && die $@; my $name = ($AUTOLOAD =~ /^main::(.+)$/)[0]; if (!defined &{$name}) { &::error(\"??`????Ă??Ȃ??֐?($AUTOLOAD)???Ă΂?܂????B"); exit; } goto &{'main::' . $name}; } # $Id: c-board.cgi,v 2.2 2003/06/17 10:00:00 N.Hirai Exp $;