Annotation of capa/capa51/pProj/capaSubjective.c, revision 1.1
1.1 ! albertel 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>