Annotation of capa/capa51/pProj/setdbheader.c, revision 1.1

1.1     ! albertel    1: #include <stdio.h>
        !             2: #include <ctype.h>
        !             3: #include <unistd.h>
        !             4: #include "capaCommon.h"
        !             5: 
        !             6: void printUsage(char* progname)
        !             7: {
        !             8:   printf("USAGE: %s [-opendate opendate] [-opentime opentime] \n\
        !             9:            [-duedate duedate]   [-duetime duetime]  \n\
        !            10:            [-ansdate ansdate]   [-anstime anstime]  \n\
        !            11:            [-set setnumber] [-dir class-directory] [-h] \n", progname);
        !            12:   printf("       -h              : prints this message\n");
        !            13:   printf("       CAPA version %s, %s\n",CAPA_VER,COMPILE_DATE);
        !            14: }
        !            15: 
        !            16: /*stolen from quizzer.funct.c*/
        !            17: int checkDate(char* date)
        !            18: { 
        !            19:   if (date==NULL) goto wrong;
        !            20:   if (strlen(date)!=8) goto wrong;
        !            21: 
        !            22:   switch(date[0]) {
        !            23:   case '0':
        !            24:     if (!isdigit(date[1])) goto wrong;
        !            25:     break;
        !            26:   case '1':
        !            27:     if (!(
        !            28: 	  (date[1]=='0') ||
        !            29: 	  (date[1]=='1') ||
        !            30: 	  (date[1]=='2')
        !            31: 	  )
        !            32: 	) goto wrong;
        !            33:     break;
        !            34:   case '2':
        !            35:     if (!(
        !            36: 	  (date[1]=='0') ||
        !            37: 	  (date[1]=='1') ||
        !            38: 	  (date[1]=='2') ||
        !            39: 	  (date[1]=='3') ||
        !            40: 	  (date[1]=='4')
        !            41: 	  )
        !            42: 	) goto wrong;
        !            43:     break;
        !            44:   default:
        !            45:     goto wrong;
        !            46:     break;
        !            47:   }
        !            48:   if (date[2] != '/') goto wrong;
        !            49:   switch(date[3]) {
        !            50:   case '0':
        !            51:   case '1':
        !            52:   case '2':
        !            53:     if (!isdigit(date[4])) goto wrong;
        !            54:     break;
        !            55:   case '3':
        !            56:     if (!(
        !            57: 	  (date[4]=='0') ||
        !            58: 	  (date[4]=='1') 
        !            59: 	  )
        !            60: 	) goto wrong;
        !            61:     break;
        !            62:   default:
        !            63:     goto wrong;
        !            64:     break;
        !            65:   }
        !            66:   if (date[5] != '/') goto wrong;
        !            67:   if (!isdigit(date[6])) goto wrong;
        !            68:   if (!isdigit(date[7])) goto wrong;
        !            69:   goto right;
        !            70: wrong:
        !            71:   return 0;
        !            72: right:
        !            73:   return 1;
        !            74: }
        !            75: 
        !            76: /* stolen from quizzer.funct.c*/
        !            77: int checkTime(char* time)
        !            78: {
        !            79:   if (time==NULL) goto wrong;
        !            80:   if (strlen(time)!=5) goto wrong;
        !            81: 
        !            82:   switch(time[0]) {
        !            83:   case '0':
        !            84:     if (!isdigit(time[1])) goto wrong;
        !            85:     break;
        !            86:   case '1':
        !            87:     if (!(isdigit(time[1])))
        !            88:       goto wrong;
        !            89:     break;
        !            90:   case '2':
        !            91:     switch(time[1])
        !            92:       {
        !            93:       case '0':
        !            94:       case '1':
        !            95:       case '2':
        !            96:       case '3':
        !            97:       case '4':
        !            98: 	break;
        !            99:       default:
        !           100: 	goto wrong;
        !           101: 	break;
        !           102:       }
        !           103:     break;
        !           104:   default:
        !           105:     goto wrong;
        !           106:     break;
        !           107:   }
        !           108:   if (time[2] != ':') goto wrong;
        !           109:   switch (time[3]) {
        !           110:   case '0':
        !           111:   case '1':
        !           112:   case '2':
        !           113:   case '3':
        !           114:   case '4':
        !           115:   case '5':
        !           116:     break;
        !           117:   default:
        !           118:     goto wrong;
        !           119:     break;
        !           120:   }
        !           121:   if (!isdigit(time[4])) goto wrong;
        !           122:   goto right;
        !           123:   
        !           124: wrong:
        !           125:   return 0;
        !           126: right:
        !           127:   return 1;
        !           128: }
        !           129: 
        !           130: int main(int argc, char** argv) 
        !           131: {
        !           132:   char *openDate="01/01/98",*openTime="01/01/98",
        !           133:     *dueDate="01/01/99",*dueTime="01/01/99",
        !           134:     *ansDate="01/01/99",*ansTime="01/01/99";
        !           135:   char *directory=NULL,*class=NULL,cwd[FILE_NAME_LENGTH];
        !           136:   char *problemWeights;
        !           137:   char *partialCredit;
        !           138:   int numQuestions=0,set=1,result,i=0;  
        !           139:   T_header header;
        !           140:   T_student student;
        !           141:   Problem_t *headProblem,*currentProblem;
        !           142: 
        !           143:   for(i=1;i<argc-1;i++) {
        !           144:     if        (0==strcmp(argv[i],"-opendate")  ) { if (checkDate(argv[i+1])) openDate=argv[i+1];
        !           145:     } else if (0==strcmp(argv[i],"-opentime")  ) { if (checkTime(argv[i+1])) openTime=argv[i+1];
        !           146:     } else if (0==strcmp(argv[i],"-duedate")   ) { if (checkDate(argv[i+1])) dueDate=argv[i+1];
        !           147:     } else if (0==strcmp(argv[i],"-duetime")   ) { if (checkTime(argv[i+1])) dueTime=argv[i+1];
        !           148:     } else if (0==strcmp(argv[i],"-answerdate")) { if (checkDate(argv[i+1])) ansDate=argv[i+1];
        !           149:     } else if (0==strcmp(argv[i],"-answertime")) { if (checkTime(argv[i+1])) ansTime=argv[i+1];
        !           150:     } else if (0==strcmp(argv[i],"-set")       ) { set=atoi(argv[i+1]); 
        !           151:     } else if (0==strcmp(argv[i],"-dir")       ) { directory=(argv[i+1]); 
        !           152:     } else { printUsage(argv[0]);exit(0); }
        !           153:   }
        !           154: 
        !           155:   if (directory) { chdir(directory); }
        !           156: 
        !           157: #if defined(NeXT) || defined(linux)
        !           158:    class = getwd(cwd);
        !           159:    if( class == NULL ) { class = cwd; }
        !           160: #else
        !           161:    class = getcwd(NULL,255);   
        !           162: #endif
        !           163: 
        !           164:   printf("Creating set%d.db file in %s/records",set,class);
        !           165: 
        !           166:   result=capa_pick_student(0,&student);
        !           167:   if (result==-1 || result==0 ) {
        !           168:     printf("Unable to find a classl file.\n");
        !           169:     exit(-1);
        !           170:   }
        !           171:   
        !           172:   result = capa_parse(set,&headProblem,student.s_sn,&numQuestions);
        !           173:   if (result==-1) {
        !           174:     printf("Unable to parse the set.\n");
        !           175:     exit(-2);
        !           176:   }
        !           177:   
        !           178:   i=0;
        !           179:   problemWeights=capa_malloc(numQuestions, sizeof(char));
        !           180:   partialCredit=capa_malloc(numQuestions, sizeof(char));
        !           181:   currentProblem=headProblem;
        !           182:   while (currentProblem!=NULL) {
        !           183:     problemWeights[i]=((char)(currentProblem->weight))+'0';
        !           184:     partialCredit[i]=((char)(currentProblem->partial_cdt))+'0';
        !           185:     currentProblem=currentProblem->next;
        !           186:     i++;
        !           187:   }
        !           188:   
        !           189:   sprintf(header.open_date,"%s %s",openDate,openTime);
        !           190:   sprintf(header.due_date, "%s %s",dueDate, dueTime);
        !           191:   sprintf(header.answer_date,"%s %s",ansDate,ansTime);
        !           192:   sprintf(header.num_questions,"%d",numQuestions);
        !           193:   
        !           194:   result=capa_set_header(&header,set,problemWeights,partialCredit);
        !           195: 
        !           196:   return 0;
        !           197: }
        !           198: 
        !           199: 
        !           200: 
        !           201: 
        !           202: 

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