]> bicyclesonthemoon.info Git - ott/bsta/blobdiff - ong.1.pl
static GOTO
[ott/bsta] / ong.1.pl
index 8c243c0a05803f615c53d4597719c4344a9ee2fd..c5a24ebf3462d276ef78ad30f88426db15323a92 100644 (file)
--- a/ong.1.pl
+++ b/ong.1.pl
@@ -33,13 +33,14 @@ use botm_common (
 use bsta_lib (
        'STATE',
        'ong',
-       'write_static_viewer_page', 'write_index'
+       'write_static_viewer_page', 'write_index', 'write_static_goto'
 );
 
 ###PERL_PATH_SEPARATOR:     PATH_SEPARATOR     = /
 
 ###PERL_DATA_PATH:          DATA_PATH          = /botm/data/bsta/
 ###PERL_DATA_DEFAULT_PATH:  DATA_DEFAULT_PATH  = /botm/data/bsta/default
+###PERL_DATA_LIST_PATH:     DATA_LIST_PATH     = /botm/data/bsta/list
 ###PERL_DATA_SETTINGS_PATH: DATA_SETTINGS_PATH = /botm/data/bsta/settings
 ###PERL_DATA_STATE_PATH:    DATA_STATE_PATH    = /botm/data/bsta/state
 
@@ -53,9 +54,13 @@ srand ($time-$$);
 
 my %settings;
 my %state;
-my %goto_list;
+my %new_state;
+# my %goto_list;
 my %default;
 my %frame_data;
+my %frame_1_data;
+my %frame_2_data;
+my %frame_3_data;
 
 my $fh;
 my $ongstate;
@@ -75,142 +80,147 @@ delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};
 ###PERL_SET_PATH: $ENV{'PATH'} = /usr/local/bin:/usr/bin:/bin;
 
 unless (open_encoded($fh, "+<:encoding(UTF-8)", DATA_STATE_PATH())) {
-       print "NO STATEFILE\n";
+       print "NO STATEFILE\n\n";
+       exit;
+}
+unless (flock($fh, 2)) {
+       print "NO STATELOCK\n\n";
+       close ($fh);
+       exit;
+}
+%state = read_data_file($fh);
+$ongstate = int($state{'state'});
+print 'state: '.$ongstate."\n";
+unless ($ongstate > STATE->{'inactive'}) {
+       print "INACTIVE\n\n";
+       close ($fh);
+       exit;
+}
+$next_ong = int($state{'nextong'});
+print 'ongtime: '.$next_ong."\n";
+
+unless ($ongtime >= $next_ong) {
+       print "WAIT\n\n";
+       close ($fh);
+       exit;
+}
+
+%settings = read_data_file(DATA_SETTINGS_PATH());
+$static_timer = int($settings{'ongtime'});
+$timer        = int($settings{'dynamicongtime'});
+$last         = int($settings{'last'});
+$frame        = int($state   {'last'})+1;
+
+if (($timer > 0) && ($frame < $last)) {
+       $timer = int($timer / ($last - $frame));
 }
 else {
-       unless (flock($fh, 2)) {
-               print "NO STATELOCK\n";
+       $timer=0;
+}
+
+if ($static_timer > $timer) {
+       $timer = $static_timer;
+}
+$next_ong = $ongtime + ($timer*3600);
+$state{'nextong'} = $next_ong;
+print 'next ongtime: '.$next_ong.' (+'.$timer.")\n";
+$state{'ongtime'}=$timer;
+
+if ($ongstate == STATE->{'ready'}) {
+       print 'next frame: '.$frame."\n";
+       
+       %default = read_data_file(DATA_DEFAULT_PATH());
+       %frame_data = read_data_file(
+               join_path(PATH_SEPARATOR(), DATA_PATH(), $frame)
+       );
+       # %goto_list = read_data_file(DATA_LIST_PATH());
+       
+       $new_state{'last'}   = $frame;
+       $new_state{'state'}  = 1;
+       $new_state{'ip1'}    = '';
+       $new_state{'ip2'}    = '';
+       $new_state{'ip3'}    = '';
+       $new_state{'ongtime'}= $timer;
+       
+       if ($frame >= 1) {
+               %frame_1_data = read_data_file(
+                       join_path(PATH_SEPARATOR(), DATA_PATH(), $frame-1)
+               );
+       }
+       if ($frame >= 2) {
+               %frame_2_data = read_data_file(
+                       join_path(PATH_SEPARATOR(), DATA_PATH(), $frame-2)
+               );
+       }
+       if ($frame >= 3) {
+               %frame_3_data = read_data_file(
+                       join_path(PATH_SEPARATOR(), DATA_PATH(), $frame-3)
+               );
+       }
+       
+       $r = ong (
+               $frame, # frame ID
+               $time,  # ONG time
+               $timer, # timer to next ONG
+               0,      # update
+               1,      # print
+               \%settings,
+               \%default,
+               \%frame_data,
+               '' # \%goto_list
+       );
+       if ($r && ($frame >= 2)) {
+               print 'static page '.($frame-1);
+               $r = write_static_viewer_page(
+                       $frame-1, # frame ID
+                       \%new_state,
+                       \%settings,
+                       \%default,
+                       \%frame_1_data, # frame data
+                       \%frame_2_data, # prev frame data
+                       \%frame_data,   # next frame data
+                       '' # words data
+               );
+               print (($r) ? " OK\n" : " FAIL\n");
+       }
+       if ($r && ($frame >= 3)) {
+               print 'static page '.($frame-2);
+               $r = write_static_viewer_page(
+                       $frame-2, # frame ID
+                       \%new_state,
+                       \%settings,
+                       \%default,
+                       \%frame_2_data, # frame data
+                       \%frame_3_data, # prev frame data
+                       \%frame_1_data, # next frame data
+                       '' # words data
+               );
+               print (($r) ? " OK\n" : " FAIL\n");
+       }
+       if ($r && ($frame <= 2)) {
+               print 'index';
+               $r = write_index(
+                       \%new_state,
+                       \%settings
+               );
+               print (($r) ? " OK\n" : " FAIL\n");
+       }
+       if ($r) {
+               print 'static GOTO';
+               $r = write_static_goto(
+                       \%new_state,
+                       \%settings,
+                       '' # \%goto_list
+               );
+               print (($r) ? " OK\n" : " FAIL\n");
+       }
+       if ($r) {
+               %state = %new_state;
+               print "ONG\n\n";
        }
        else {
-               %state = read_data_file($fh);
-               $ongstate = int($state{'state'});
-               print 'state: '.$ongstate."\n";
-               unless ($ongstate > STATE->{'inactive'}) {
-                       print "INACTIVE\n";
-               }
-               else {
-                       $next_ong = int($state{'nextong'});
-                       print 'ongtime: '.$next_ong."\n";
-                       
-                       unless ($ongtime >= $next_ong) {
-                               print "WAIT\n";
-                       }
-                       else {
-                               %settings = read_data_file(DATA_SETTINGS_PATH());
-                               $static_timer = int($settings{'ongtime'});
-                               $timer        = int($settings{'dynamicongtime'});
-                               $last         = int($settings{'last'});
-                               $frame        = int($state   {'last'})+1;
-                               
-                               if (($timer > 0) && ($frame < $last)) {
-                                       $timer = int($timer / ($last - $frame));
-                               }
-                               else {
-                                       $timer=0;
-                               }
-                               
-                               if ($static_timer > $timer) {
-                                       $timer = $static_timer;
-                               }
-                               $next_ong = $ongtime + ($timer*3600);
-                               $state{'nextong'} = $next_ong;
-                               print 'next ongtime: '.$next_ong.' (+'.$timer.")\n";
-                               $state{'ongtime'}=$timer;
-                               
-                               if ($ongstate == STATE->{'ready'}) {
-                                       print 'next frame: '.$frame."\n";
-                                       
-                                       %default = read_data_file(DATA_DEFAULT_PATH());
-                                       %frame_data = read_data_file(
-                                               join_path(PATH_SEPARATOR(), DATA_PATH(), $frame)
-                                       );
-                                       
-                                       $r = ong (
-                                               $frame, # frame ID
-                                               $time,  # ONG time
-                                               $timer, # timer to next ONG
-                                               0,      # update
-                                               1,      # print
-                                               \%settings,
-                                               \%default,
-                                               \%frame_data,
-                                               ''      # %goto_list
-                                       );
-                                       if ($r) {
-                                               $state{'last'}   = $frame;
-                                               $state{'state'}  = 1;
-                                               $state{'ip1'}    = '';
-                                               $state{'ip2'}    = '';
-                                               $state{'ip3'}    = '';
-                                               $state{'ongtime'}= $timer;
-                                               print "ONG\n";
-                                               
-                                               my %frame_1_data;
-                                               my %frame_2_data;
-                                               my %frame_3_data;
-                                               if ($frame >= 1) {
-                                                       %frame_1_data = read_data_file(
-                                                               join_path(PATH_SEPARATOR(), DATA_PATH(), $frame-1)
-                                                       );
-                                               }
-                                               if ($frame >= 2) {
-                                                       %frame_2_data = read_data_file(
-                                                               join_path(PATH_SEPARATOR(), DATA_PATH(), $frame-2)
-                                                       );
-                                               }
-                                               if ($frame >= 3) {
-                                                       %frame_3_data = read_data_file(
-                                                               join_path(PATH_SEPARATOR(), DATA_PATH(), $frame-3)
-                                                       );
-                                               }
-                                               if ($frame >= 2)
-                                               {
-                                                       print 'static page '.($frame-1);
-                                                       $r = write_static_viewer_page(
-                                                               $frame-1, # frame ID
-                                                               \%state,
-                                                               \%settings,
-                                                               \%default,
-                                                               \%frame_1_data, # frame data
-                                                               \%frame_2_data, # prev frame data
-                                                               \%frame_data,   # next frame data
-                                                               '' # words data
-                                                       );
-                                                       print (($r) ? " OK\n" : " FAIL\n");
-                                               }
-                                               if ($frame >= 3)
-                                               {
-                                                       print 'static page '.($frame-2);
-                                                       $r = write_static_viewer_page(
-                                                               $frame-2, # frame ID
-                                                               \%state,
-                                                               \%settings,
-                                                               \%default,
-                                                               \%frame_2_data, # frame data
-                                                               \%frame_3_data, # prev frame data
-                                                               \%frame_1_data, # next frame data
-                                                               '' # words data
-                                                       );
-                                                       print (($r) ? " OK\n" : " FAIL\n");
-                                               }
-                                               if ($frame <= 2) {
-                                                       print 'index';
-                                                       $r = write_index(
-                                                               \%state,
-                                                               \%settings
-                                                       );
-                                                       print (($r) ? " OK\n" : " FAIL\n");
-                                               }
-                                       }
-                                       else {
-                                               print "NO ONG\n";
-                                       }
-                               }
-                               write_data_file($fh, \%state);
-                       }
-               }
+               print "NO ONG\n\n";
        }
-       close ($fh);
 }
-
-print "\n";
\ No newline at end of file
+write_data_file($fh, \%state);
+close ($fh);