/* * common.funct.c * Copyright Guy Albertelli II 1998 * Portions Copyright Issac Tsai */ #include #include #include #include #include #include #include #include /* Used by the parse front end to escape any special characters in TCL */ /* arguments are source buffer, destination buffer, and where to start */ /* in the destination buffer */ int capaPrepareBuffer(char *buf,char *buf2,int j) { int i; for(i=0;i "); break; } } void capaInsertAnswer(Problem_t *p,Tcl_Interp *interp, char *window) { extern int Parsemode_f; char* answer; answer=answers_string(Parsemode_f,p); bufInsert(interp,window,answer); capa_mfree(answer); } /* updates the gDate var with the current date and reregisters itself * to run in .8 seconds */ int capaDateUpdate(ClientData clientdata, Tcl_Interp *interp, int argc, char *argv[]) { time_t rightNow=time(NULL); if (Tcl_SetVar(interp,"gDate",asctime(localtime(&rightNow)), TCL_GLOBAL_ONLY) == NULL) { fprintf(stderr,"Tcl_Eval error\n"); fprintf(stderr,"%s\n",interp->result); return TCL_ERROR; } if (Tcl_Eval(interp,"after 800 { dateUpdate } ") != TCL_OK) { fprintf(stderr,"Tcl_Eval error\n"); fprintf(stderr,"%s\n",interp->result); return TCL_ERROR; } return TCL_OK; } int capaGetExistingSections(ClientData clientdata, Tcl_Interp *interp, int argc, char *argv[]) { int i=0,result,sectionArray[MAX_SECTION_COUNT]; char buf[BUFFER_SIZE]; Tcl_ResetResult(interp); result=capa_get_section_count(sectionArray); if (result==-1) { Tcl_AppendElement(interp,"Unable to find a classl file.\n"); return TCL_ERROR; } for(i=1;i<=sectionArray[0];i++) { if ( sectionArray[i] !=0 ) { sprintf(buf,"%d %d",i, sectionArray[i]); Tcl_AppendElement(interp,buf); } } return TCL_OK; } /* finds how many set.db files there are */ int howManySetDBFile() { char filename[BUFFER_SIZE], *pathName; int ii; pathName=getcwd(NULL,BUFFER_SIZE); ii=1; sprintf(filename,"%s/records/set%d.db",pathName,ii); while(!access(filename, F_OK)) { ii++; sprintf(filename,"%s/records/set%d.db",pathName,ii); } free(pathName); return (ii-1); } /* argv[1] is student number argv[2] is setnumber */ int capaGetSpecifiCapaId(ClientData clientdata, Tcl_Interp *interp, int argc, char *argv[]) { char buf[MAX_BUFFER_SIZE]; if (argc==3) { sprintf(buf,"%d",capa_PIN(argv[1],atoi(argv[2]),0)); Tcl_AppendElement(interp,buf); } else { sprintf(buf,"Usage: %s StudentNumber SetNumber",argv[0]); Tcl_AppendElement(interp,buf); } return TCL_OK; } /* argv[1] is student number argv[2] is section number argv[3] is setnumber */ int capaIsSetOpen(ClientData clientdata, Tcl_Interp *interp, int argc, char *argv[]) { char buf[MAX_BUFFER_SIZE]; if (argc==4) { sprintf(buf,"%d",capa_check_date(CHECK_OPEN_DATE,argv[1],atoi(argv[2]),atoi(argv[3]))); Tcl_AppendElement(interp,buf); } else { sprintf(buf,"Usage: %s StudentNumber SectionNumber SetNumber",argv[0]); Tcl_AppendElement(interp,buf); } return TCL_OK; } void message() { signed char *message= "***** ***** ************ ***** *****\n" "****** ****** ****************** ***** *****\n" " ****** ****** **** **** **** **** \n" " ******* ******* **** **** **** **** \n" " ******** ******** **** **** **** **** \n" " **** **** **** **** **** **** **** \n" " **** **** **** **** **** **** **** \n" " **** **** **** **** **** **** **** \n" " **** ******** **** **** **** **** \n" " **** ****** **** *************** **** **** \n" " **** **** **** *************** **** **** \n" " **** ** **** **** **** **** \n" " **** **** **** **** **** \n" " **** **** **** **** **** \n" " **** **** **** **** **** \n" " **** **** **** **** **** **** \n" " **** **** **** **** **** **** \n" " **** **** **** **** **** **** \n" "***** ***** ****************** ***************** \n" "***** ***** ************ *********** \n" "Copyright MSU Board of Trustees 1992-1999 \n" "No Unauthorized Commercial Use or redistribution allowed. \n"; fprintf(stderr,message); exit(0); }