Beispiel #1
0
void save_task_if_of_type (FILE* file, const Task& task) {
  const T* cast_task = dynamic_cast<const T*>(&task);
  if (cast_task != NULL) {
    save_task(file, *cast_task);
  }
}
Beispiel #2
0
//**********************************************************************************	
	void perform_respond(){
		char params[20][256];
		int count, rolle, parent, fltausw, fltwert;
		time_t sessionid;
		long len;
		int maxlen = 1199;
		char *envptr;
		char input[1200];
		char *lenstr;

		if(strcmp(getenv("REQUEST_METHOD"), "GET") == 0){
			envptr = getenv("QUERY_STRING");

			if(envptr == NULL || strlen(envptr) == 0){
				count = 0;
			}
			else if(strlen(envptr) > maxlen){
				send_error(mERR_MAXLEN);
				return;
			}
			else{
				count = parse_data_from_input(envptr, params);
			}
		}
		else if(strcmp(getenv("REQUEST_METHOD"), "POST") == 0){
			lenstr = getenv("CONTENT_LENGTH");

			if(lenstr == NULL || sscanf(lenstr, "%ld", &len) != 1 || len > maxlen){
				send_error(mERR_MAXLEN);
				return;
			}
			else{
				fgets(input, len + 1, stdin);
				count = parse_data_from_input(input, params);
			}
		}
		else{
			send_error(mERR_REQUEST);
			return;
		}

		if(count == 0){
			send_login(mMSG_BLANK);
		}
		else if(strcmp(params[0], "action=verify_login") == 0){
			verify_login(params, count);
		}
		else if(strcmp(params[0], "action=home") == 0){
			if(count == 5){
				sscanf(params[1], "sessionid=%ld", &sessionid);
				sscanf(params[2], "rolle=%d", &rolle);
				fltausw = 0;
				sscanf(params[3], "fltausw=%d", &fltausw);
				fltwert = 0;
				sscanf(params[4], "fltwert=%d", &fltwert);
				send_tasks(sessionid, rolle, fltausw, fltwert, mMSG_BLANK);
			}
		}
		else if(strcmp(params[0], "action=send_subtasks") == 0){
			if(count == 4){
				sscanf(params[1], "parent=%d", &parent);
				sscanf(params[2], "sessionid=%ld", &sessionid);
				sscanf(params[3], "rolle=%d", &rolle);
				send_subtasks(parent, sessionid, rolle, mMSG_BLANK);
			}
		}
		else if(strcmp(params[0], "action=save_task") == 0){
			save_task(params, count);
		}
		else if(strcmp(params[0], "action=save_subtask") == 0){
			save_subtask(params, count);
		}
		else if(strcmp(params[0], "action=send_query") == 0){
			if(count == 3){
				sscanf(params[1], "sessionid=%ld", &sessionid);
				sscanf(params[2], "rolle=%d", &rolle);
				send_query(sessionid, rolle);
			}
		}
		else if(strcmp(params[0], "action=query") == 0){
			query(params, count);
		}
		else if(strcmp(params[0], "action=send_usradmin") == 0){
			if(count == 3){
				sscanf(params[1], "sessionid=%ld", &sessionid);
				sscanf(params[2], "rolle=%d", &rolle);
				send_usradmin(sessionid, rolle, mMSG_BLANK);
			}
		}
		else if(strcmp(params[0], "action=verify_pwchange") == 0){
			verify_pwchange(params, count);
		}
		else if(strcmp(params[0], "action=admin") == 0){
			send_admin(params, count);
		}
		else{
			send_error(mERR_ACTION);
			return;
		}
	}
Beispiel #3
0
void save_tasks (FILE* file, const Tasklist& tasks) {
  fprintf(file, "Tasks: %ld\n", tasks.size());
  for (const Task* task : tasks) {
    save_task(file, *task);
  }
}