#!/usr/local/bin/perl

# rebuild a db file from the infomation in the records dir
#  Copyright (C) 1992-2000 Michigan State University
#
#  The CAPA system is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License as
#  published by the Free Software Foundation; either version 2 of the
#  License, or (at your option) any later version.
#
#  The CAPA system is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#  General Public License for more details.
#
#  You should have received a copy of the GNU General Public
#  License along with the CAPA system; see the file COPYING.  If not,
#  write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
#  Boston, MA 02111-1307, USA.
#
#  As a special exception, you have permission to link this program
#  with the TtH/TtM library and distribute executables, as long as you
#  follow the requirements of the GNU GPL in regard to all of the
#  software in the executable aside from TtH/TtM.

 require('getopts.pl');
 
 
 
 sub  S_Enterpath {
    local($set)=@_;
    local($notdone,$path);
    
    $notdone = 1;
    while ($notdone) {
      print "Please enter the CLASS absolute path:\n";
      $path = <>; chomp($path);
      if( $path =~ /\/$/ ) {
        $Rfullpath = "$path" . "records";
        $Lfullpath = "$path" . "records/log$set.db";
        $Wfullpath = "$path" . "records/weblog$set.db";
      } else {
        $Rfullpath = "$path" . "/records";
        $Lfullpath = "$path" . "/records/log$set.db";
        $Wfullpath = "$path" . "/records/weblog$set.db";
      }
      if( -d $path ) {
        if( -d $Rfullpath ) {
          if( -f $Lfullpath ) {
            $notdone = 0;
          } else {
            print "File [$Lfullpath] does not exist!\n";
          }
          if( -f $Wfullpath ) {
            $notdone = 0;
          } else {
            print "File [$Wfullpath] does not exist!\n";
          }
        } else {
          print "Directory [$Rfullpath] does not exist!\n";
        }
      } else {
        print "Directory [$path] does not exist!\n";
      }
    
    }
    return ($path);
  }
  
  sub S_ScanDB  {
    local($filename)=@_;
    local($line_cnt)=0;
    local($s_num,$dow,$mon,$sp,$day,$time,$yr,$ans_str);
    local($rest);
    local(@ans_char);
    local($ii,$first,$cmd);
    local($usr_ans,$usr_try,$prob_cnt);
    
    open(IN, "<$filename") || die "Cannot open $filename file!";
    $Yes_cnt = 0; $No_cnt = 0;
    while (<IN>) {
      $line_cnt++;
      chomp();
      ($first,$ans_str) = split(/ [1-9][0-9][0-9][0-9] /);
       # print "$ans_str\n";
      ($s_num,$rest) = split(/ /,$first);
      (@ans_char) = split(/ */,$ans_str);
       $s_num = uc($s_num);
       $usr_ans = "$s_num" . "ans";
       $usr_try = "$s_num" . "try";
       if( $prob_cnt == 0 ) {
         $prob_cnt = $#ans_char +1;
       }
       if(! defined @$usr_ans  ) {
         for($ii=0;$ii<=$#ans_char;$ii++) {
           $$usr_ans[$ii] = '-';
         }
       }
       if(! defined @$usr_try  ) {
         for($ii=0;$ii<=$#ans_char;$ii++) {
           $$usr_try[$ii] = 0;
         }
       }
       for($ii=0;$ii<=$#ans_char;$ii++) {
         if( $ans_char[$ii] eq 'Y') {
           $$usr_ans[$ii] = 'Y';
           $$usr_try[$ii]++;
         }
         if( $ans_char[$ii] eq 'N') {
           if( $$usr_ans[$ii] ne 'Y') {
             $$usr_ans[$ii] = 'N';
           }
           $$usr_try[$ii]++;
         }
       }
       if(! defined $Exist{"$s_num"} ) {
         $Exist{"$s_num"} = $s_num;
       }
     }
     close(IN) || die "Cannot close $filename file!";
     return ($prob_cnt);
  }
  
  
  
  if(! &Getopts('s:') ) {
     print STDERR "$Usage\n";
     exit 2;
  }
  $opt_s = 1  if ! $opt_s;
  S_Enterpath($opt_s);
  
  $cnt = S_ScanDB("$Lfullpath");
  $cnt = S_ScanDB("$Wfullpath");
  
  foreach $sn (sort keys %Exist) {
    $usr_ans = "$sn" . "ans";
    $usr_try = "$sn" . "try";
    print "$sn ";
    for($ii = 0; $ii< $cnt;$ii++) {
      print $$usr_ans[$ii];
    }
    for($ii = 0; $ii< $cnt;$ii++) {
      printf ",%2d", $$usr_try[$ii];
    }
    print "\n";
  }
  
  
  
  
  
  
  
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at 
 root@localhost to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>
