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>