static void parse_request(rb_helper *helper) { static char *parv[MAXPARA + 1]; static char readbuf[READBUF_SIZE]; int parc; int len; while((len = rb_helper_read(helper, readbuf, sizeof(readbuf))) > 0) { parc = rb_string_to_array(readbuf, parv, MAXPARA); if(parc < 1) continue; switch (parv[0][0]) { case 'K': parse_ban(BANDB_KLINE, parv, parc); break; case 'D': parse_ban(BANDB_DLINE, parv, parc); break; case 'X': parse_ban(BANDB_XLINE, parv, parc); break; case 'R': parse_ban(BANDB_RESV, parv, parc); break; case 'k': parse_unban(BANDB_KLINE, parv, parc); break; case 'd': parse_unban(BANDB_DLINE, parv, parc); break; case 'x': parse_unban(BANDB_XLINE, parv, parc); break; case 'r': parse_unban(BANDB_RESV, parv, parc); break; case 'L': list_bans(); break; default: break; } } }
int parse_data_module( DATAModule *module ) { int data_count; bool fatalError = TRUE; // if true, catch leads to exit(-1) try { data_count = module->datas_count; for ( int i = 0; i < module->datas_count; i++ ) { DataContext ctx; data_context = &ctx; const char *tagName = module->datas[i]->tag->image; const int tagId = find_tag( tagName ); if ( DATA_VERBOSE > 4 ) { printf("tagName: %s tagId: %d\n\r", tagName, tagId ); } switch ( tagId ) { case TAG_Prereq: parse_prerequisite( module->datas[i] ); break; case TAG_BrewFormula: create_brew_formula_table( module->datas_count ); parse_brew_formula( module->datas[i] ); break; case TAG_Ban: parse_ban( module->datas[i] ); break; case TAG_Command: create_command_table( module->datas_count ); parse_command( module->datas[i] ); break; case TAG_Unique: parse_unique( module->datas[i] ); break; case TAG_Disable: parse_disabled( module->datas[i] ); break; case TAG_Material: create_material_table( module->datas_count ); parse_material( module->datas[i] ); break; case TAG_Liquid: create_liquid_table( module->datas_count ); parse_liquid( module->datas[i] ); break; case TAG_God: create_god_table( module->datas_count ); parse_god( module->datas[i] ); break; case TAG_Clan: parse_clan( module->datas[i] ); break; case TAG_Faction: create_faction_table( module->datas_count, module ); parse_faction( module->datas[i] ); break; case TAG_Race: create_races_table( module->datas_count ); parse_race( module->datas[i] ); break; case TAG_PCRace: create_pcraces_table( module->datas_count ); parse_pcrace( module->datas[i] ); break; case TAG_Sphere: create_spheres_table( module->datas_count ); parse_sphere( module->datas[i] ); break; case TAG_Group: create_groups_table( module->datas_count ); parse_groups( module->datas[i] ); break; case TAG_Ability: parse_abilities( module->datas[i] ); break; case TAG_Class: create_classes_table( module->datas_count ); parse_classes( module->datas[i] ); break; case TAG_Player: fatalError = FALSE; parse_player( module->datas[i] ); fatalError = TRUE; break; case TAG_Area: parse_area( module->datas[i] ); break; case TAG_Config: if ( parse_config( module->datas[i] ) ) // once we have found the right config: skip others return data_count; break; case TAG_AreaState: parse_area_state( module->datas[i] ); break; case TAG_Time: parse_time( module->datas[i] ); break; case TAG_Hometown: create_hometown_table( module->datas_count ); parse_hometown( module->datas[i] ); break; case TAG_School: create_school_table( module->datas_count ); parse_school( module->datas[i] ); break; case TAG_Super_Race: create_super_race_table( module->datas_count ); parse_super_race( module->datas[i] ); break; default: p_error("Invalid Tag: %s", tagName ); break; } } } catch (ScriptException e) { bug("Error while parsing datas. %s", e.msg ); if ( fatalError ) { bug("FATAL error. Bye!"); exit(-1); } else return -1; } dump_GC_info(); return data_count; }