--- loncom/homework/caparesponse/caparesponse.c 2001/10/29 21:15:45 1.6 +++ loncom/homework/caparesponse/caparesponse.c 2004/03/12 21:06:19 1.12 @@ -1,3 +1,30 @@ +/* The LearningOnline Network with CAPA + * CAPA wrapper code + * $Id: caparesponse.c,v 1.12 2004/03/12 21:06:19 albertel Exp $ + * + * Copyright Michigan State University Board of Trustees + * + * This file is part of the LearningOnline Network with CAPA (LON-CAPA). + * + * LON-CAPA 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. + * + * LON-CAPA 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 LON-CAPA; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * /home/httpd/html/adm/gpl.txt + * + * http://www.lon-capa.org/ + */ + #include #include @@ -41,7 +68,7 @@ int caparesponse_capa_check_answer(char int sig_lbound,int sig_ubound, char *ans_fmt, char *unit_str, int calc, char *id_list, char *pts_list, - char *rndseed) + char *rndseed, char** reterror) { long result,seed1,seed2; @@ -49,8 +76,7 @@ int caparesponse_capa_check_answer(char char *error=NULL,filename[FILE_NAME_LENGTH]; FILE *fp; - /*fprintf(stderr,"hi in caparesponse\n");*/ - /*need to initialize unit parser*/ + /* need to initialize unit parser*/ sprintf(filename,"/home/httpd/html/res/adm/includes/capa.units"); if ((fp=fopen(filename,"r"))==NULL) { /* printf("Error: can't open %s\n",filename);*/ @@ -77,8 +103,11 @@ int caparesponse_capa_check_answer(char p.tolerance = tolerance; p.sig_lbound = sig_lbound; p.sig_ubound = sig_ubound; - strncpy(p.ans_fmt,ans_fmt,ANSWER_STRING_LENG-1); - if (unit_str[0]!='\0') { + + if (ans_fmt != NULL ) { + strncpy(p.ans_fmt,ans_fmt,ANSWER_STRING_LENG-1); + } + if (unit_str != NULL && unit_str[0]!='\0') { strncpy(p.unit_str,unit_str,ANSWER_STRING_LENG-1); p.ans_unit = u_parse_unit(unit_str); } else { @@ -87,10 +116,10 @@ int caparesponse_capa_check_answer(char } p.calc = calc; - result=capa_check_answer(&p,response,&error); - - if (error!=NULL) {free(error);} + *reterror=error; + // Caller is expected to free reterror + // if (error!=NULL) {free(error);} return result; }