/* ==================================================================== */ #ifndef CAPA_CGI_H #define CAPA_CGI_H #ifdef CAPA_ARG #undef CAPA_ARG #define CAPA_ARG(x) x #endif /* #ifdef __STDC__ #define CAPA_ARG(x) x #else #define CAPA_ARG(x) () #endif */ #ifdef _MAIN_PROGRAM_ #define GLOBAL_VAR(xx) xx #else #define GLOBAL_VAR(xx) extern xx #endif #define MAX_ENTRIES 10000 /* maximal number of entries in a web page form */ #define DEFAULT_STATUS_LINE_LENGTH 50 #define MAX_PROBLEM_CNT 1024 #define MAX_ANSWER_CHAR 32 #define MAX_CLASS_CHAR 16 /* officially, it is 8, since the account name won't allow */ /* more than 8 characters. */ /* ----------------------------- various mode used in print_quizz() */ #define TRY_SET_MODE 1 #define CHECK_ANSWER_MODE 2 #define VIEW_PREVIOUS_MODE 3 #define TEXT_BUF_SIZE 1 /*(128*1024)*/ #define STATUS_BUF_SIZE 100 /*(32*1024)*/ typedef struct _form_entry { char *name; char *val; } FormEntry_t; typedef struct _student_answer { int a_idx; char *a_str; struct _student_answer *a_next; } StudentAnswer_t; #define M_CHECKIN 1 #define M_TRYSET 2 #define M_CHECKANS 3 #define M_VIEWPREV 4 #define M_VIEWSUMM 5 #define M_EXAMSUMM 6 #define M_QUIZSUMM 7 #define M_TERMSCORE 8 #define LF 10 #define CR 13 /* --------- default parameter values when something mis-specified in capa.config -------- */ #define DEFAULT_HW_W 0.3 #define DEFAULT_QZ_W 0.07 #define DEFAULT_EX_W 0.3 #define DEFAULT_FE_W 0.35 #define DEFAULT_PC_W 0.3 #define DEFAULT_HW_COUNT 12 #define DEFAULT_QZ_COUNT 24 #define DEFAULT_FE_NUMBER 4 /* ============ function prototype in capaCgiUtils.c ===================== */ void getword CAPA_ARG((char *word, char *line, char stop)); char *makeword CAPA_ARG((char *line, char stop)); char *fmakeword CAPA_ARG((FILE *f, char stop, int *cl)); char x2c CAPA_ARG((char *what)); void unescape_url CAPA_ARG((char *url)); void plustospace CAPA_ARG((char *str)); int rind CAPA_ARG((char *s, char c)); int getline CAPA_ARG((char *s, int n, FILE *f)); void send_fd CAPA_ARG((FILE *f, FILE *fd)); int ind CAPA_ARG((char *s, char c)); void escape_shell_cmd CAPA_ARG((char *cmd)); int web_log CAPA_ARG((char *log_str)); /* void file_log CAPA_ARG((char *filename, char *log_str)); */ int w_log_timing CAPA_ARG((char *student_number,int set,int section,char *log_string)); int w_log_attempt CAPA_ARG((char *student_number,int set,char *log_string)); int w_log_submissions CAPA_ARG((char *student_number,int set,char *log_string)); int w_get_input CAPA_ARG(()); void print_mainmenu CAPA_ARG((char *class,char *sn, int pin)); void print_page_header CAPA_ARG((int mode,int num_quest)); void print_quizz CAPA_ARG((char *class_dir, char *c_owner,char *class,char *sn,int pin,int set,int mode)); void print_response CAPA_ARG((char pcr,char u_db,int q_idx,Problem_t *p)); void print_inhibited_response CAPA_ARG((char pcr,char u_db,int q_idx,Problem_t *p)); void check_user_ans CAPA_ARG((int q_idx,Problem_t *p)); void check_inhibited_user_ans CAPA_ARG((int q_idx,Problem_t *p)); void get_response CAPA_ARG((char pcr,char u_db,int q_idx,Problem_t *p)); void log_user_ans CAPA_ARG((int q_idx,Problem_t *p)); int check_class_get_maxset CAPA_ARG((char *dir_path)); int check_exam_quiz_path CAPA_ARG(()); void print_summary CAPA_ARG((char *class_dir,char *class, char *student_number,int pin,int set)); void print_termscore_page CAPA_ARG((char *class_dir,char *class, char *student_number,int pin,int set,FILE *out)); int get_termscore_params CAPA_ARG((float *hw,float *qw,float *ew,float *fw,float *pw,int *hc,int *qc,int *fs)); int web_getclassdir CAPA_ARG((char **cpath_p, char **cown_p, char *class)); char *c_getpath CAPA_ARG((FILE *f)); void append_qtext CAPA_ARG((char *new_str)); void append_stext CAPA_ARG((char *new_str)); void process_mode CAPA_ARG((int mode)); void process_summary CAPA_ARG((int mode)); void web_printheader CAPA_ARG((FILE*)); void web_printfooter CAPA_ARG((FILE*)); void preserve_last_answer CAPA_ARG((int q_idx,int print)); /* ======================================================================= */ GLOBAL_VAR(char *g_question_txt); GLOBAL_VAR(int g_qchar_cnt); GLOBAL_VAR(int g_qsize); GLOBAL_VAR(char *g_status_txt); GLOBAL_VAR(int g_schar_cnt); GLOBAL_VAR(int g_ssize); GLOBAL_VAR(int g_run_mode); GLOBAL_VAR(int g_start_question); #define ALL_QUESTIONS -1 GLOBAL_VAR(int g_num_questions_per_page); GLOBAL_VAR(int g_inhibit_response); GLOBAL_VAR(char g_prog_name[FILE_NAME_LENGTH]); GLOBAL_VAR(char g_class_fullpath[FILE_NAME_LENGTH]); GLOBAL_VAR(FormEntry_t g_entries[MAX_ENTRIES] ); GLOBAL_VAR(char g_student_number[MAX_STUDENT_NUMBER+4]); GLOBAL_VAR(char g_student_name[MAX_NAME_CHAR+1]); GLOBAL_VAR(T_student g_student_data); GLOBAL_VAR(char g_class_name[MAX_CLASS_CHAR]); GLOBAL_VAR(char g_class_fullpath[FILE_NAME_LENGTH]); GLOBAL_VAR(char *g_cpath); GLOBAL_VAR(char *g_cowner); GLOBAL_VAR(int g_entered_pin); GLOBAL_VAR(int g_login_set); GLOBAL_VAR(int g_set); GLOBAL_VAR(int g_vset); GLOBAL_VAR(StudentAnswer_t *g_stu_ans_pp[MAX_PROBLEM_CNT]); GLOBAL_VAR(StudentAnswer_t *g_last_ans_pp[MAX_PROBLEM_CNT]); /*GLOBAL_VAR(char *g_student_answer[MAX_PROBLEM_CNT]); GLOBAL_VAR(char *g_last_answer[MAX_PROBLEM_CNT]);*/ GLOBAL_VAR(char g_new_answerdb[MAX_PROBLEM_CNT]); GLOBAL_VAR(char g_log_string[MAX_PROBLEM_CNT]); GLOBAL_VAR(int g_modified[MAX_PROBLEM_CNT]); GLOBAL_VAR(int g_passdue); GLOBAL_VAR(int g_tried[MAX_PROBLEM_CNT]); GLOBAL_VAR(int g_smode); GLOBAL_VAR(int g_skind); GLOBAL_VAR(char g_cwd[FILE_NAME_LENGTH]); #ifdef __alpha GLOBAL_VAR(struct timespec g_ats); GLOBAL_VAR(struct timespec g_bts); #endif GLOBAL_VAR(FILE *g_cgi); GLOBAL_VAR(int g_exam_set); GLOBAL_VAR(int g_quiz_set); GLOBAL_VAR(char g_exam_path[FILE_NAME_LENGTH]); GLOBAL_VAR(char g_quiz_path[FILE_NAME_LENGTH]); GLOBAL_VAR(char *g_cgibin_path); /* ======================================================================= */ #endif /* CAPA_CGI_H */ 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.