Annotation of capa/capa51/GUITools/grader.c, revision 1.1.1.1

1.1       albertel    1: /*
                      2:  * grader.c
                      3:  * Copyright Guy Albertelli II 1996
                      4:  */
                      5: #include <stdio.h>
                      6: #include <tk.h>
                      7: #include <stdlib.h>
                      8: #include <Capa/capaCommon.h>
                      9: #include <unistd.h>
                     10: #include <grader.h> 
                     11: 
                     12: extern Tcl_Interp *gInterp;
                     13: 
                     14: int Grader_Init(Tcl_Interp *interp);
                     15: 
                     16: int main(int argc,char **argv)
                     17: {
                     18:   char * rDisplay,*q,buffer[BUFFER_SIZE];
                     19:   char filename[BUFFER_SIZE];
                     20:   int found=1;
                     21: 
                     22:   gInterp=Tcl_CreateInterp();
                     23:   if (gInterp ==NULL)
                     24:   {
                     25:     fprintf(stderr,"Couldn't get a new Tcl Interp\n");
                     26:     return -1;
                     27:   }
                     28: 
                     29:   rDisplay = getenv("DISPLAY");
                     30:   
                     31:   if (rDisplay==NULL)
                     32:   {
                     33:     fprintf(stderr,"getenv for DISPLAY returned NULL\n");
                     34:     return -2;
                     35:   }
                     36:   
                     37:   if (Tcl_SetVar2 (gInterp, "env", "DISPLAY", rDisplay, TCL_GLOBAL_ONLY) == NULL) 
                     38:   {
                     39:     fprintf(stderr,"Couldn't set env(DISPLAY) = %s\n",rDisplay);
                     40:     return -3;
                     41:   }
                     42: 
                     43:   q = Tcl_Merge(argc-1, argv+1);
                     44:   Tcl_SetVar(gInterp, "argv", q, TCL_GLOBAL_ONLY);
                     45:   ckfree(q);
                     46:   sprintf(buffer, "%d", argc-1);
                     47:   Tcl_SetVar(gInterp, "argc", buffer, TCL_GLOBAL_ONLY);
                     48:   Tcl_SetVar(gInterp, "argv0", argv[0],TCL_GLOBAL_ONLY);
                     49:   Tcl_SetVar(gInterp, "tcl_interactive","0", TCL_GLOBAL_ONLY);
                     50: 
                     51:   if (Tcl_Init(gInterp) == TCL_ERROR) 
                     52:   {
                     53:     fprintf(stderr,"Tcl_Init error\n");
                     54:     fprintf(stderr,"%d\n",TCL_ERROR);
                     55:     fprintf(stderr,"%s\n",gInterp->result);
                     56:     return -4;
                     57:   }
                     58:   
                     59:   if (Tk_Init(gInterp) == TCL_ERROR) 
                     60:   {
                     61:     fprintf(stderr,"Tk_Init error\n");
                     62:     fprintf(stderr,"%d\n",TCL_ERROR);
                     63:     fprintf(stderr,"%s\n",gInterp->result);
                     64:     return -5;  
                     65:   }
                     66: 
                     67:   Grader_Init(gInterp);
                     68: 
                     69:   sprintf(filename,"./utils.tcl");
                     70:   if( capa_access(filename, F_OK) == -1 ) {
                     71:     sprintf(filename,"/usr/local/bin/Grader/utils.tcl");
                     72:     if( capa_access(filename, F_OK) == -1 ) {
                     73:       sprintf(filename,"/usr/local/lib/CAPA45/utils.tcl");
                     74:       if( capa_access(filename, F_OK) == -1 ) {
                     75: 	sprintf(filename,"/usr/local/lib/utils.tcl");
                     76: 	if( capa_access(filename, F_OK) == -1 ) {
                     77: 	  sprintf(filename,"/usr/local/lib/utils.tcl");
                     78: 	  if( capa_access(filename, F_OK) == -1 ) {
                     79: 	    sprintf(filename,"/usr/local/lib/CAPA45/Grader/utils.tcl");
                     80: 	    if( capa_access(filename, F_OK) == -1 ) {
                     81: 	      sprintf(filename,"/usr/lib/utils.tcl");
                     82: 	      if( capa_access(filename, F_OK) == -1 ) { /* I gave up! */
                     83: 		found=0;
                     84: 	      } 
                     85: 	    }
                     86: 	  }
                     87: 	} 
                     88:       }
                     89:     }
                     90:   }
                     91: 
                     92:   if( found ) {
                     93:     if (Tcl_EvalFile(gInterp, filename) != TCL_OK) 
                     94:       {
                     95: 	fprintf(stderr,"%s\n",gInterp->result);
                     96: 	return -6;
                     97:       }
                     98:   } else {
                     99:     fprintf(stderr,"Unable to find utils.tcl\n");
                    100:     exit(-7);
                    101:   }
                    102: 
                    103:   sprintf(filename,"./common.tcl");
                    104:   if( capa_access(filename, F_OK) == -1 ) {
                    105:     sprintf(filename,"/usr/local/bin/Grader/common.tcl");
                    106:     if( capa_access(filename, F_OK) == -1 ) {
                    107:       sprintf(filename,"/usr/local/lib/CAPA45/common.tcl");
                    108:       if( capa_access(filename, F_OK) == -1 ) {
                    109: 	sprintf(filename,"/usr/local/lib/common.tcl");
                    110: 	if( capa_access(filename, F_OK) == -1 ) {
                    111: 	  sprintf(filename,"/usr/local/lib/common.tcl");
                    112: 	  if( capa_access(filename, F_OK) == -1 ) {
                    113: 	    sprintf(filename,"/usr/local/lib/CAPA45/Grader/common.tcl");
                    114: 	    if( capa_access(filename, F_OK) == -1 ) {
                    115: 	      sprintf(filename,"/usr/lib/common.tcl");
                    116: 	      if( capa_access(filename, F_OK) == -1 ) { /* I gave up! */
                    117: 		found=0;
                    118: 	      } 
                    119: 	    }
                    120: 	  }
                    121: 	} 
                    122:       }
                    123:     }
                    124:   }  
                    125:   if( found ) {
                    126:     if (Tcl_EvalFile(gInterp, filename) != TCL_OK) 
                    127:       {
                    128: 	fprintf(stderr,"%s\n",gInterp->result);
                    129: 	return -6;
                    130:       }
                    131:   } else {
                    132:     fprintf(stderr,"Unable to find common.tcl\n");
                    133:     exit(-7);
                    134:   }
                    135: 
                    136:   sprintf(filename,"./grader.tcl");
                    137:   if( access(filename, F_OK) == -1 ) {
                    138:     sprintf(filename,"/usr/local/lib/CAPA45/grader.tcl");
                    139:     if( access(filename, F_OK) == -1 ) {
                    140:       sprintf(filename,"/usr/local/lib/grader.tcl");
                    141:       if( access(filename, F_OK) == -1 ) {
                    142:         sprintf(filename,"/usr/local/lib/CAPA45/Grader/grader.tcl");
                    143:         if( access(filename, F_OK) == -1 ) {
                    144:           sprintf(filename,"/usr/lib/grader.tcl");
                    145:           if( access(filename, F_OK) == -1 ) {
                    146: 	    sprintf(filename,"/usr/local/bin/Grader/grader.tcl");
                    147:             if( access(filename, F_OK) == -1 ) { /* I gave up! */
                    148:               found=0;
                    149:             } 
                    150:           }
                    151:         }
                    152:       } 
                    153:     }
                    154:   }
                    155:  
                    156:   /*
                    157:   fprintf(stderr,"HEY STILL IN DEVELOPEMENT MODE\n");
                    158:   if (Tcl_EvalFile(gInterp, "grader.tcl") 
                    159:       != TCL_OK) 
                    160:   {
                    161:     fprintf(stderr,"%s\n",gInterp->result);
                    162:     return -6;
                    163:   }
                    164:   */
                    165: 
                    166:   if( found ) {
                    167:     if (Tcl_EvalFile(gInterp, filename) != TCL_OK) 
                    168:     {
                    169:       fprintf(stderr,"%s\n",gInterp->result);
                    170:       return -6;
                    171:     }
                    172:     while(Tcl_DoOneEvent(TCL_ALL_EVENTS));
                    173:   } else {
                    174: 	fprintf(stderr,"Unable to find grader.tcl\n");
                    175: 	exit(-7);
                    176:   }
                    177:   
                    178:   return 0;
                    179: }
                    180: 
                    181: 
                    182: 
                    183: 

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