Annotation of capa/capa51/CapaTools/rebuild.pl, revision 1.4

1.1       albertel    1: #!/usr/local/bin/perl
                      2: 
1.3       albertel    3: # rebuild a db file from the infomation in the records dir
                      4: #  Copyright (C) 1992-2000 Michigan State University
                      5: #
                      6: #  The CAPA system is free software; you can redistribute it and/or
1.4     ! albertel    7: #  modify it under the terms of the GNU General Public License as
1.3       albertel    8: #  published by the Free Software Foundation; either version 2 of the
                      9: #  License, or (at your option) any later version.
                     10: #
                     11: #  The CAPA system is distributed in the hope that it will be useful,
                     12: #  but WITHOUT ANY WARRANTY; without even the implied warranty of
                     13: #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1.4     ! albertel   14: #  General Public License for more details.
1.3       albertel   15: #
1.4     ! albertel   16: #  You should have received a copy of the GNU General Public
1.3       albertel   17: #  License along with the CAPA system; see the file COPYING.  If not,
                     18: #  write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
                     19: #  Boston, MA 02111-1307, USA.
                     20: #
                     21: #  As a special exception, you have permission to link this program
                     22: #  with the TtH/TtM library and distribute executables, as long as you
                     23: #  follow the requirements of the GNU GPL in regard to all of the
                     24: #  software in the executable aside from TtH/TtM.
                     25: 
1.1       albertel   26:  require('getopts.pl');
                     27:  
                     28:  
                     29:  
                     30:  sub  S_Enterpath {
                     31:     local($set)=@_;
                     32:     local($notdone,$path);
                     33:     
                     34:     $notdone = 1;
                     35:     while ($notdone) {
                     36:       print "Please enter the CLASS absolute path:\n";
                     37:       $path = <>; chomp($path);
                     38:       if( $path =~ /\/$/ ) {
                     39:         $Rfullpath = "$path" . "records";
                     40:         $Lfullpath = "$path" . "records/log$set.db";
                     41:         $Wfullpath = "$path" . "records/weblog$set.db";
                     42:       } else {
                     43:         $Rfullpath = "$path" . "/records";
                     44:         $Lfullpath = "$path" . "/records/log$set.db";
                     45:         $Wfullpath = "$path" . "/records/weblog$set.db";
                     46:       }
                     47:       if( -d $path ) {
                     48:         if( -d $Rfullpath ) {
                     49:           if( -f $Lfullpath ) {
                     50:             $notdone = 0;
                     51:           } else {
                     52:             print "File [$Lfullpath] does not exist!\n";
                     53:           }
                     54:           if( -f $Wfullpath ) {
                     55:             $notdone = 0;
                     56:           } else {
                     57:             print "File [$Wfullpath] does not exist!\n";
                     58:           }
                     59:         } else {
                     60:           print "Directory [$Rfullpath] does not exist!\n";
                     61:         }
                     62:       } else {
                     63:         print "Directory [$path] does not exist!\n";
                     64:       }
                     65:     
                     66:     }
                     67:     return ($path);
                     68:   }
                     69:   
                     70:   sub S_ScanDB  {
                     71:     local($filename)=@_;
                     72:     local($line_cnt)=0;
                     73:     local($s_num,$dow,$mon,$sp,$day,$time,$yr,$ans_str);
                     74:     local($rest);
                     75:     local(@ans_char);
                     76:     local($ii,$first,$cmd);
                     77:     local($usr_ans,$usr_try,$prob_cnt);
                     78:     
                     79:     open(IN, "<$filename") || die "Cannot open $filename file!";
                     80:     $Yes_cnt = 0; $No_cnt = 0;
                     81:     while (<IN>) {
                     82:       $line_cnt++;
                     83:       chomp();
                     84:       ($first,$ans_str) = split(/ [1-9][0-9][0-9][0-9] /);
                     85:        # print "$ans_str\n";
                     86:       ($s_num,$rest) = split(/ /,$first);
                     87:       (@ans_char) = split(/ */,$ans_str);
1.2       albertel   88:        $s_num = uc($s_num);
1.1       albertel   89:        $usr_ans = "$s_num" . "ans";
                     90:        $usr_try = "$s_num" . "try";
                     91:        if( $prob_cnt == 0 ) {
                     92:          $prob_cnt = $#ans_char +1;
                     93:        }
                     94:        if(! defined @$usr_ans  ) {
                     95:          for($ii=0;$ii<=$#ans_char;$ii++) {
                     96:            $$usr_ans[$ii] = '-';
                     97:          }
                     98:        }
                     99:        if(! defined @$usr_try  ) {
                    100:          for($ii=0;$ii<=$#ans_char;$ii++) {
                    101:            $$usr_try[$ii] = 0;
                    102:          }
                    103:        }
                    104:        for($ii=0;$ii<=$#ans_char;$ii++) {
                    105:          if( $ans_char[$ii] eq 'Y') {
                    106:            $$usr_ans[$ii] = 'Y';
                    107:            $$usr_try[$ii]++;
                    108:          }
                    109:          if( $ans_char[$ii] eq 'N') {
                    110:            if( $$usr_ans[$ii] ne 'Y') {
                    111:              $$usr_ans[$ii] = 'N';
                    112:            }
                    113:            $$usr_try[$ii]++;
                    114:          }
                    115:        }
                    116:        if(! defined $Exist{"$s_num"} ) {
                    117:          $Exist{"$s_num"} = $s_num;
                    118:        }
                    119:      }
                    120:      close(IN) || die "Cannot close $filename file!";
                    121:      return ($prob_cnt);
                    122:   }
                    123:   
                    124:   
                    125:   
                    126:   if(! &Getopts('s:') ) {
                    127:      print STDERR "$Usage\n";
                    128:      exit 2;
                    129:   }
                    130:   $opt_s = 1  if ! $opt_s;
                    131:   S_Enterpath($opt_s);
                    132:   
                    133:   $cnt = S_ScanDB("$Lfullpath");
                    134:   $cnt = S_ScanDB("$Wfullpath");
                    135:   
                    136:   foreach $sn (sort keys %Exist) {
                    137:     $usr_ans = "$sn" . "ans";
                    138:     $usr_try = "$sn" . "try";
                    139:     print "$sn ";
                    140:     for($ii = 0; $ii< $cnt;$ii++) {
                    141:       print $$usr_ans[$ii];
                    142:     }
                    143:     for($ii = 0; $ii< $cnt;$ii++) {
                    144:       printf ",%2d", $$usr_try[$ii];
                    145:     }
                    146:     print "\n";
                    147:   }
                    148:   
                    149:   
                    150:   
                    151:   
                    152:   
                    153:   
                    154:   

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>