ans_cnt;ii++) {
- if (p->ans_type == ANSWER_IS_FORMULA) {
+ if (p->ans_type == ANSWER_IS_FORMULA) {
+ /* first answer is stored in p, the rest are linked off of p->ans_list */
sprintf(buf,"Answer %d of %d:\n",ii+1,p->ans_cnt,q_idx+1,ii+1);
+ } else {
+ sprintf(buf,"
Answer %d of %d:\n",ii+1,p->ans_cnt,q_idx+1,ii+1);
+ }
+ append_qtext(buf);
+ for(ii=1, ai=p->ans_list;iians_cnt;ai=ai->ans_next,ii++) {
+ if (ai->ans_type == ANSWER_IS_FORMULA) {
+ sprintf(buf,"Answer %d of %d:\n",ii+1,p->ans_cnt,q_idx+1,ii+1);
} else {
sprintf(buf,"
Answer %d of %d:\n",ii+1,p->ans_cnt,q_idx+1,ii+1);
}
@@ -1886,7 +1886,9 @@ char buf[MAX_BUFFER_SIZE];
}
/* returns a -1 if there were not enough answers, otherwise the number of responses
- for the question is returned*/
+ for the question is returned
+ !!!!!AS A SIDEEFFECT IT ALSO CROPS ANSWERS TO ANSWER_STRING_LENG!!!!!!!
+*/
int gather_answers(char ***ans,int q_idx,Problem_t *p)
{
int cnt;
@@ -1896,6 +1898,7 @@ int gather_answers(char ***ans,int q_idx
sa_p= g_stu_ans_pp[q_idx+1];
for(i=0;((ians_cnt)&&(sa_p));i++){
ans[0][i]=sa_p->a_str;
+ if ((strlen(ans[0][i])+1) > ANSWER_STRING_LENG) ans[0][i][ANSWER_STRING_LENG]='\0';
sa_p=sa_p->a_next;
}
cnt=p->ans_cnt;
@@ -1903,6 +1906,7 @@ int gather_answers(char ***ans,int q_idx
} else {
*ans=(char**)capa_malloc(p->ans_cnt,1);
ans[0][0]=g_stu_ans_pp[q_idx+1]->a_str;
+ if ((strlen(ans[0][0])+1) > ANSWER_STRING_LENG) ans[0][0][ANSWER_STRING_LENG]='\0';
cnt=1;
}
return cnt;
@@ -1993,7 +1997,7 @@ int tries;
submit_subjective(q_idx,p);
return;
}
-
+
cnt=gather_answers(&ans,q_idx,p);
if (cnt == -1) {
g_tried[q_idx]--;
@@ -2185,7 +2189,8 @@ char *class_dir;char *class;char *studen
set_score, /* Score on a set */
term_score=0, /* Total points received */
term_valid=0, /* Total points possible */
- result;
+ result,
+ tot_num_sets=0;
T_entry entry; /* Database entry for a set */
char buf[MAX_BUFFER_SIZE]; /* Output line buffer */
char buf2[MAX_BUFFER_SIZE]; /* Output line buffer */
@@ -2200,7 +2205,7 @@ char *class_dir;char *class;char *studen
fprintf(stdout,"Unable to complete actions.\n");
return;
}
-
+ printf("");
sprintf(class_fullpath,"%s/%s",class_dir,class);
chdir(class_fullpath);
configResult=read_capa_config("web_status_line_length",buf);
@@ -2221,9 +2226,18 @@ char *class_dir;char *class;char *studen
for (set_idx=1; set_idx<=set; set_idx++) {
g_inhibit_response=capa_check_option(OPTION_INHIBIT_RESPONSE,set_idx,
g_student_data.s_sec);
- if (g_inhibit_response > 0) continue;
+ if (g_inhibit_response > 0) {
+ printf("\n",set_idx);
+ continue;
+ }
+ if ( capa_check_date(CHECK_OPEN_DATE,g_student_number,
+ g_student_data.s_sec,set_idx) < 0 ){
+ printf("\n",set_idx);
+ continue;
+ }
if (capa_get_header(&header,set_idx)) return;
+ tot_num_sets++;
capa_get_entry(&entry,student_number,set_idx);
sscanf(header.num_questions,"%d", &(question_cnt) );
valid_wgt = 0; set_score = 0;
@@ -2267,7 +2281,11 @@ char *class_dir;char *class;char *studen
printf("\n\n
\n");
/* SHOW TOTALS */
/* if capalogin_show_summary_score is set to none don't show it */
- sprintf(buf,"%d sets, total = %3d/%3d (%d%%)\n", set, term_score, term_valid, 100*term_score/term_valid);
+ if (term_valid > 0) {
+ sprintf(buf,"%d sets, total = %3d/%3d (%d%%)\n", tot_num_sets, term_score, term_valid, 100*term_score/term_valid);
+ } else {
+ sprintf(buf,"%d sets, total = %3d/%3d\n", tot_num_sets, term_score, term_valid);
+ }
result=read_capa_config("capalogin_show_summary_score",buf2);
if (result != 0 && result != -1) {
if (strcasecmp(buf2,"none")==0) {