static void free_command(struct kobject *kobj) { struct command *cmd = to_command(kobj); list_del(&cmd->queue_node); atomic_dec(&command_count); dbg("command count: %d\n", atomic_read(&command_count)); kfree(cmd->buffer); kfree(cmd); }
void interpret(commandline c, Schedule* s) { switch (to_command(c.function)) { case QUIT: std::cout<<"Bye bye !"<<std::endl ; break ; case HELP: if (c.args.size() == 0) { help(HELP) ; } else { help(to_command(c.args[0])) ; } break ; case IMPORT: if (check_args(c, 2, 0)) { std::string schedule = c.args[0] ; std::string dotations = c.args[1] ; s->import_html(schedule, dotations) ; } break ; case ADDTEACHER: for (std::vector<std::string>::iterator it=c.args.begin() ; it!=c.args.end() ; it++) { s->add_teacher(*it) ; } break ; case LISTTEACHER: if(check_args(c, 0, 0)) { s->list_teachers() ; } break ; case LISTGROUP: if(check_args(c, 0, 0)) { s->list_groups() ; } break ; case DISPLAY: if(check_args(c, 1, 1)) { std::string name = addspace(c.args[0]) ; int semester = handle_options(c.options) ; s->display(name, semester) ; } break ; case ASSIGN: { std::string teacher = addspace(c.args[0]) ; c.args.erase(c.args.begin()) ; int semester = handle_options(c.options) ; s->assign(teacher, c.args, semester) ; } break ; case UNASSIGN: if(check_args(c, 1, 1)) { std::string group = c.args[0] ; int semester = handle_options(c.options) ; s->unassign(group, semester) ; } break ; case UNASSIGNED: if(check_args(c, 0, 1)) { int semester = handle_options(c.options) ; s->unassigned_groups(semester) ; } break ; case COMPATIBLE: if(check_args(c, 1, 1)) { std::string name = addspace(c.args[0]) ; int semester = handle_options(c.options) ; s->compatible(name, semester) ; } break ; case COMPATIBLE2: if(check_args(c, 1, 1)) { std::string name = c.args[0] ; int semester = handle_options(c.options) ; s->compatible2(name, semester) ; } break ; case COMPATIBLEOMSI: if(check_args(c, 1, 1)) { std::string name = c.args[0] ; int semester = handle_options(c.options) ; s->compatible_omsi(name, semester) ; } break ; case DELETETEACHER: if(check_args(c, 1, 0)) { std::string name = c.args[0] ; s->delete_teacher(name) ; } break ; case INDISP: if (check_args(c, 4, 1)) { std::string name = addspace(c.args[0]) ; int day = get_day(c.args[1]) ; int h_begin = get_hour(c.args[2]) ; int h_end = get_hour(c.args[3]) ; int semester = handle_options(c.options) ; s->indisp(name, semester, day, h_begin, h_end) ; } break ; case DISP: if (check_args(c, 4, 1)) { std::string name = c.args[0] ; int day = get_day(c.args[1]) ; int h_begin = get_hour(c.args[2]) ; int h_end = get_hour(c.args[3]) ; int semester = handle_options(c.options) ; s->disp(name, semester, day, h_begin, h_end) ; } break ; default: std::cout<<"Unrecognized command, try again !"<<std::endl ; } }