File:  [LON-CAPA] / capa / capa51 / pProj / capaSubjective.c
Revision 1.1: download - view: text, annotated - select for diffs
Tue Sep 28 21:26:22 1999 UTC (24 years, 9 months ago) by albertel
Branches: MAIN
CVS tags: HEAD
Initial revision

    1: #include "capaCommon.h"
    2: #include <sys/stat.h>
    3: #include <sys/types.h>
    4: #include <fcntl.h>
    5: #include <unistd.h>
    6: #include <ctype.h>
    7: 
    8: char* strtoupper(char* source)
    9: {
   10:   char* result;
   11:   int i,len=strlen(source);
   12:   result=capa_malloc(len,1);
   13:   for(i=0;i<len;i++) result[i]=toupper(source[i]);
   14:   return result;
   15: }
   16: 
   17: int capa_set_subjective (int set,int problem,char *student_num,char* response)
   18: {
   19:   char buf[FILE_NAME_LENGTH],*upperstunum;
   20:   FILE *responsefile;
   21: 
   22:   sprintf(buf,"records/set%d",set);
   23:   if( capa_access(buf, F_OK) == -1 ) { 
   24:     if ( mkdir(buf, S_IREAD | S_IWRITE | S_IEXEC ) == -1 ) { return -1; }
   25:   }
   26: 
   27:   sprintf(buf,"records/set%d/problem%d",set,problem);
   28:   if( capa_access(buf, F_OK) == -1 ) { 
   29:     if ( mkdir(buf, S_IREAD | S_IWRITE | S_IEXEC ) == -1 ) { return -2; }
   30:   }
   31: 
   32:   upperstunum=strtoupper(student_num);
   33:   sprintf(buf,"records/set%d/problem%d/%s",set,problem,upperstunum);
   34:   if ((responsefile=fopen(buf,"w"))==NULL)  { return -3; }
   35:   
   36:   fwrite(response,strlen(response),1,responsefile);
   37:   fclose(responsefile);
   38:   return 0;
   39: }
   40: 
   41: char* capa_get_subjective (int set,int problem,char *student_num)
   42: {
   43:   char buf[FILE_NAME_LENGTH],*upperstunum,*response;
   44:   FILE *responsefile;
   45:   long length;
   46: 
   47:   upperstunum=strtoupper(student_num);
   48:   sprintf(buf,"records/set%d/problem%d/%s",set,problem,upperstunum);
   49:   if ((responsefile=fopen(buf,"r"))==NULL)  { return NULL; }
   50:   fseek(responsefile,0,SEEK_END);
   51:   length=ftell(responsefile);
   52:   rewind(responsefile);
   53:   response=capa_malloc(length+1,1);
   54:   fread(response,length,1,responsefile);
   55:   response[length]='\0';
   56:   return response;
   57: }

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