'HTTP_STATUS',
'http_header_status',
'read_header_env',
- 'read_data_file', 'write_data_file',
- 'url_query_decode',
- 'join_path'
+ 'write_data_file',
+ 'url_query_decode'
);
use bsta_lib (
'STATE',
'fail_method', 'fail_content_type',
'get_password',
- 'merge_settings'
+ 'merge_settings',
+ 'get_page_file', 'get_frame_file',
+ 'read_frame_data', 'read_default', 'read_noaccess',
+ 'read_settings', 'read_default', 'read_state',
+ 'read_words_list', 'read_words', 'read_attachment'
);
-###PERL_PATH_SEPARATOR: PATH_SEPARATOR = /
-
-###PERL_DATA_PATH: DATA_PATH = /botm/data/bsta
-###PERL_DATA_ATTACH_PATH: DATA_ATTACH_PATH = /botm/data/bsta/a
-###PERL_DATA_DEFAULT_PATH: DATA_DEFAULT_PATH = /botm/data/bsta/default
-###PERL_DATA_NOACCESS_PATH: DATA_NOACCESS_PATH = /botm/data/bsta/noaccess
-###PERL_DATA_SETTINGS_PATH: DATA_SETTINGS_PATH = /botm/data/bsta/settings
-###PERL_DATA_STATE_PATH: DATA_STATE_PATH = /botm/data/bsta/state
-###PERL_DATA_WORDS_PATH: DATA_WORDS_PATH = /botm/data/bsta/words/
-
binmode STDIN, ':encoding(UTF-8)';
binmode STDOUT, ':encoding(UTF-8)';
binmode STDERR, ':encoding(UTF-8)';
my $show_command;
my $ongtime;
my $timer;
-my $info_data_path;
-my $next_frame_data_path;
my $ong_state;
my $last_frame;
elsif ($cgi{'w'} =~ /^.+$/) {
$words = $&;
}
-elsif ($ENV{'PATH_INFO'} =~ /^\/a(.+)$/) {
+elsif ($ENV{'PATH_INFO'} =~ /^\/a\/?(.+)$/) {
$attachment = int($1);
}
-elsif ($ENV{'PATH_INFO'} =~ /^\/w(.+)$/) {
+elsif ($ENV{'PATH_INFO'} =~ /^\/w\/?(.+)$/) {
$words = $1;
}
-elsif ($ENV{'PATH_INFO'} =~ /^\/f?(.+)$/) {
- $frame = int($1);
+elsif ($ENV{'PATH_INFO'} =~ /^\/(f\/?)?(.+)$/) {
+ $frame = int($2);
}
$password = get_password(\%cgi);
-%settings = read_data_file(DATA_SETTINGS_PATH());
-%default = read_data_file(DATA_DEFAULT_PATH());
-%state = read_data_file(DATA_STATE_PATH());
+%settings = read_settings();
+%default = read_default();
+%state = read_state(());
$ong_state = int($state{'state'});
$last_frame = int($state{'last'});
# comment info, not frame
if ($words ne '') {
- $info_data_path = join_path(PATH_SEPARATOR(), DATA_WORDS_PATH(), $words);
- %info_data = read_data_file($info_data_path);
if ($words =~ /^[0-9]+$/) {
+ %info_data = read_words_list(
+ int($&), # id
+ 0, # header only
+ 1 # not as list
+ );
$frame = int($&);
if ($info_data{'posts'} eq '') {
$info_data{'posts'} = 0;
}
}
- else {
+ elsif ($words =~ /^[0-9]+\.[0-9\.]+$/) {
+ %info_data = read_words($&);
$frame = ($info_data{'frame'} ne '') ? int($info_data{'frame'}) : -1;
unless ($password_ok) {
delete($info_data{'password'});
}
# attachment info, not frame
elsif ($attachment ne '') {
- %info_data = read_data_file(DATA_ATTACH_PATH().$attachment);
+ %info_data = read_attachment($attachment);
$frame = ($info_data{'frame'} ne '') ? int($info_data{'frame'}) : -1;
}
# frame info
if ($frame < 0) {
$frame = $last_frame + $frame +1;
}
- $info_data_path = join_path(PATH_SEPARATOR(), DATA_PATH(), $frame);
- $next_frame_data_path = join_path(PATH_SEPARATOR(), DATA_PATH(), $frame+1);
- %info_data = read_data_file($info_data_path);
- %next_frame_data = read_data_file($next_frame_data_path);
- %info_data = merge_settings(\%default, \%info_data);
- %next_frame_data = merge_settings(\%default, \%next_frame_data);
+ %info_data = read_frame_data($frame, \%default);
+ %next_frame_data = read_frame_data($frame+1, \%default);
$timer = int($state{'nextong'}) - $time;
$ongtime = int($state{'ongtime'});
%info_data = ();
}
else {
- %info_data = read_data_file(DATA_NOACCESS_PATH());
- %info_data = merge_settings(\%default, \%info_data);
+ %info_data = read_noaccess(\%default);
}
}
if (
($words eq '')
) {
if ($info_data{'frame'} eq '') {
- $info_data{'frame'} = sprintf($settings{'frame'}, $frame, $info_data{'ext'});
+ $info_data{'frame'} = get_frame_file($frame, \%info_data, \%settings)
}
if ($info_data{'page'} eq '') {
unless (($access) && ($frame < $last_frame)) {
$info_data{'page'} = '';
}
- elsif ($frame == 0) {
- $info_data{'page'} = 'index.htm';
- }
else {
- $info_data{'page'} = sprintf($settings{'frame'}, $frame, 'htm');
+ $info_data{'page'} = get_page_file($frame, \%info_data, \%settings);
}
}
}