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); } }
//********************************************************************************** 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; } }
void save_tasks (FILE* file, const Tasklist& tasks) { fprintf(file, "Tasks: %ld\n", tasks.size()); for (const Task* task : tasks) { save_task(file, *task); } }