diff --git a/src/bnetd/account_wrap.cpp b/src/bnetd/account_wrap.cpp index b02151e..25b27fd 100644 --- a/src/bnetd/account_wrap.cpp +++ b/src/bnetd/account_wrap.cpp @@ -1105,7 +1105,7 @@ namespace pvpgn return 0; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\wins"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\wins"); return account_get_numattr(account, key.c_str()); } @@ -1119,7 +1119,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\wins"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\wins"); return account_set_numattr(account, key.c_str(), account_get_ladder_wins(account, clienttag, id) + 1); } @@ -1133,7 +1133,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\wins"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\wins"); return account_set_numattr(account, key.c_str(), wins); } @@ -1147,7 +1147,7 @@ namespace pvpgn return 0; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\losses"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\losses"); return account_get_numattr(account, key.c_str()); } @@ -1161,7 +1161,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\losses"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\losses"); return account_set_numattr(account, key.c_str(), account_get_ladder_losses(account, clienttag, id) + 1); } @@ -1175,7 +1175,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\losses"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\losses"); return account_set_numattr(account, key.c_str(), losses); } @@ -1189,7 +1189,7 @@ namespace pvpgn return 0; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\draws"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\draws"); return account_get_numattr(account, key.c_str()); } @@ -1203,7 +1203,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\draws"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\draws"); return account_set_numattr(account, key.c_str(), account_get_ladder_draws(account, clienttag, id) + 1); } @@ -1217,7 +1217,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\draws"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\draws"); return account_set_numattr(account, key.c_str(), draws); } @@ -1231,7 +1231,7 @@ namespace pvpgn return 0; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\disconnects"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\disconnects"); return account_get_numattr(account, key.c_str()); } @@ -1245,7 +1245,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\disconnects"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\disconnects"); return account_set_numattr(account, key.c_str(), account_get_ladder_disconnects(account, clienttag, id) + 1); } @@ -1259,7 +1259,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\disconnects"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\disconnects"); return account_set_numattr(account, key.c_str(), discs); } @@ -1336,7 +1336,7 @@ namespace pvpgn return 0; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\rank"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\rank"); return account_get_numattr(account, key.c_str()); } @@ -1350,7 +1350,7 @@ namespace pvpgn return -1; } - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\rank"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\rank"); int retval = 0; if (account_set_numattr(account, key.c_str(), rank) < 0) @@ -1359,7 +1359,7 @@ namespace pvpgn unsigned int oldrank = account_get_ladder_high_rank(account, clienttag, id); if (oldrank == 0 || rank < oldrank) { - key = "Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\high rank"; + key = "Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\high rank"; if (account_set_numattr(account, key.c_str(), rank) < 0) retval = -1; @@ -2026,9 +2026,10 @@ namespace pvpgn // WAR3 Play Game & Profile Funcs - extern char const * race_get_str(unsigned int race) + extern std::string race_get_str(unsigned int race) { - switch (race) { + switch (race) + { case W3_RACE_ORCS: return "orcs"; case W3_RACE_HUMANS: @@ -2046,17 +2047,17 @@ namespace pvpgn return "demons"; default: eventlog(eventlog_level_warn, __FUNCTION__, "unknown race: %x", race); - return nullptr; + return std::string(); } } extern int account_inc_racewins(t_account * account, unsigned int intrace, t_clienttag clienttag) { - char const * race = race_get_str(intrace); - if (race == nullptr) + std::string race = race_get_str(intrace); + if (race.empty()) return -1; - std::string table("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(race) + "\\wins"); + std::string table("Record\\" + tag_uint_to_str2(clienttag) + "\\" + race + "\\wins"); unsigned int wins = account_get_numattr(account, table.c_str()); wins++; return account_set_numattr(account, table.c_str(), wins); @@ -2064,22 +2065,22 @@ namespace pvpgn extern int account_get_racewins(t_account * account, unsigned int intrace, t_clienttag clienttag) { - char const *race = race_get_str(intrace); - if (race == nullptr) + std::string race = race_get_str(intrace); + if (race.empty()) return 0; - std::string table("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(race) + "\\wins"); + std::string table("Record\\" + tag_uint_to_str2(clienttag) + "\\" + race + "\\wins"); return account_get_numattr(account, table.c_str()); } extern int account_inc_racelosses(t_account * account, unsigned int intrace, t_clienttag clienttag) { - char const *race = race_get_str(intrace); - if (race == nullptr) + std::string race = race_get_str(intrace); + if (race.empty()) return -1; - std::string table("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(race) + "\\losses"); + std::string table("Record\\" + tag_uint_to_str2(clienttag) + "\\" + race + "\\losses"); unsigned int losses = account_get_numattr(account, table.c_str()); losses++; @@ -2089,11 +2090,11 @@ namespace pvpgn extern int account_get_racelosses(t_account * account, unsigned int intrace, t_clienttag clienttag) { - char const *race = race_get_str(intrace); - if (race == nullptr) + std::string race = race_get_str(intrace); + if (race.empty()) return 0; - std::string table("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(race) + "\\losses"); + std::string table("Record\\" + tag_uint_to_str2(clienttag) + "\\" + race + "\\losses"); return account_get_numattr(account, table.c_str()); @@ -2142,28 +2143,28 @@ namespace pvpgn extern int account_get_ladder_xp(t_account * account, t_clienttag clienttag, t_ladder_id id) { - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\xp"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\xp"); return account_get_numattr(account, key.c_str()); } extern int account_set_ladder_xp(t_account * account, t_clienttag clienttag, t_ladder_id id, unsigned int xp) { - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\xp"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\xp"); return account_set_numattr(account, key.c_str(), xp); } extern int account_get_ladder_level(t_account * account, t_clienttag clienttag, t_ladder_id id) { - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\level"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\level"); return account_get_numattr(account, key.c_str()); } extern int account_set_ladder_level(t_account * account, t_clienttag clienttag, t_ladder_id id, unsigned int level) { - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\level"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\level"); return account_set_numattr(account, key.c_str(), level); } @@ -2737,14 +2738,14 @@ namespace pvpgn extern int account_get_ladder_points(t_account * account, t_clienttag clienttag, t_ladder_id id) { - std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\points"); + std::string key("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\points"); return account_get_numattr(account, key.c_str()); } extern int account_set_ladder_points(t_account * account, t_clienttag clienttag, t_ladder_id id, unsigned int points) { - std::string key ("Record\\" + tag_uint_to_str2(clienttag) + "\\" + std::string(ladder_id_str[static_cast(id)]) + "\\points"); + std::string key ("Record\\" + tag_uint_to_str2(clienttag) + "\\" + ladder_id_str.at(static_cast(id)) + "\\points"); return account_set_numattr(account, key.c_str(), points); } diff --git a/src/bnetd/account_wrap.h b/src/bnetd/account_wrap.h index 54fa167..9990b9f 100644 --- a/src/bnetd/account_wrap.h +++ b/src/bnetd/account_wrap.h @@ -216,7 +216,7 @@ namespace pvpgn extern int account_remove_friend(t_account * account, int friendnum); extern int account_remove_friend2(t_account * account, const char * friendname); - extern char const * race_get_str(unsigned int race); + extern std::string race_get_str(unsigned int race); extern int account_set_admin(t_account * account); extern int account_set_demoteadmin(t_account * account); diff --git a/src/bnetd/adbanner.cpp b/src/bnetd/adbanner.cpp index 17aab84..10d112c 100644 --- a/src/bnetd/adbanner.cpp +++ b/src/bnetd/adbanner.cpp @@ -253,7 +253,7 @@ namespace pvpgn return; } - // check if where allready knows about ctag + // check if where already knows about ctag AdCtagRefMap::iterator cit2(where.find(adKey)); // if not register ctag if (cit2 == where.end()) diff --git a/src/bnetd/anongame.cpp b/src/bnetd/anongame.cpp index dde7417..5391b88 100644 --- a/src/bnetd/anongame.cpp +++ b/src/bnetd/anongame.cpp @@ -1234,7 +1234,7 @@ namespace pvpgn */ /* opponent level calculation has to be done here, because later on, the level of other players - * may allready be modified + * may already be modified */ for (i = 0; i < tp; i++) { int j, k, l; diff --git a/src/bnetd/anongame_wol.cpp b/src/bnetd/anongame_wol.cpp index dddc0f2..4c66fa5 100644 --- a/src/bnetd/anongame_wol.cpp +++ b/src/bnetd/anongame_wol.cpp @@ -289,37 +289,40 @@ namespace pvpgn static int _send_msg(t_connection * conn, char const * command, char const * text) { - t_packet * p; - char data[MAX_IRC_MESSAGE_LEN + 1]; - char const * nick; - - if (!conn) { + if (!conn) + { eventlog(eventlog_level_error, __FUNCTION__, "got NULL connection"); return -1; } - if (!command) { + if (!command) + { eventlog(eventlog_level_error, __FUNCTION__, "got NULL command"); return -1; } - if (!text) { + if (!text) + { eventlog(eventlog_level_error, __FUNCTION__, "got NULL text"); return -1; } - if (!(p = packet_create(packet_class_raw))) { + + t_packet * p = packet_create(packet_class_raw); + if (!p) + { eventlog(eventlog_level_error, __FUNCTION__, "could not create packet"); return -1; } - nick = conn_get_loggeduser(conn); + const char *nick = conn_get_loggeduser(conn); if (!nick) nick = "UserName"; - std::snprintf(data, sizeof(data), ":matchbot!u@h %s %s %s", command, nick, text); + std::string data(":matchbot!u@h " + std::string(command) + " " + std::string(nick) + " " + std::string(text)); + data.erase(MAX_IRC_MESSAGE_LEN, std::string::npos); - DEBUG2("[%d] sent \"%s\"", conn_get_socket(conn), data); - std::strcat(data, "\r\n"); + DEBUG2("[%d] sent \"%s\"", conn_get_socket(conn), data.c_str()); + data.append("\r\n"); packet_set_size(p, 0); - packet_append_data(p, data, std::strlen(data)); + packet_append_data(p, data.c_str(), data.length()); conn_push_outqueue(conn, p); packet_del_ref(p); return 0; @@ -391,37 +394,37 @@ namespace pvpgn if ((player1 != player2) && ((conn_get_channel(conn_pl1)) == (conn_get_channel(conn_pl2)))) { switch (ctag) { case CLIENTTAG_REDALERT2_UINT: { - random = rand(); + random = rand(); - if (std::strcmp(channelname, RAL2_CHANNEL_FFA) == 0) { - int pl1_colour = anongame_wol_player_get_colour(player1); - int pl1_country = anongame_wol_player_get_country(player1); - int pl2_colour = anongame_wol_player_get_colour(player2); - int pl2_country = anongame_wol_player_get_country(player2); + if (std::strcmp(channelname, RAL2_CHANNEL_FFA) == 0) { + int pl1_colour = anongame_wol_player_get_colour(player1); + int pl1_country = anongame_wol_player_get_country(player1); + int pl2_colour = anongame_wol_player_get_colour(player2); + int pl2_country = anongame_wol_player_get_country(player2); - DEBUG0("Generating SOLO game for Red Alert 2"); + DEBUG0("Generating SOLO game for Red Alert 2"); - _get_pair(&pl1_colour, &pl2_colour, 7, true); - _get_pair(&pl1_country, &pl2_country, 8, false); - mapname = anongame_get_map_from_prefs(ANONGAME_TYPE_1V1, ctag); + _get_pair(&pl1_colour, &pl2_colour, 7, true); + _get_pair(&pl1_country, &pl2_country, 8, false); + mapname = anongame_get_map_from_prefs(ANONGAME_TYPE_1V1, ctag); - /* We have madatory of game */ - std::snprintf(_temp, sizeof(_temp), ":Start %d,0,0,10000,0,1,0,1,1,0,1,x,2,1,165368,%s,1:", random, mapname); - std::strcat(temp, _temp); + /* We have madatory of game */ + std::snprintf(_temp, sizeof(_temp), ":Start %d,0,0,10000,0,1,0,1,1,0,1,x,2,1,165368,%s,1:", random, mapname); + std::strcat(temp, _temp); - /* GameHost informations */ - std::snprintf(_temp, sizeof(_temp), "%s,%d,%d,%x,1,%x,", conn_get_chatname(conn_pl1), pl1_country, pl1_colour, anongame_wol_player_get_address(player1), anongame_wol_player_get_port(player1)); - std::strcat(temp, _temp); + /* GameHost informations */ + std::snprintf(_temp, sizeof(_temp), "%s,%d,%d,%x,1,%x,", conn_get_chatname(conn_pl1), pl1_country, pl1_colour, anongame_wol_player_get_address(player1), anongame_wol_player_get_port(player1)); + std::strcat(temp, _temp); - /* GameJoinie informations */ - std::snprintf(_temp, sizeof(_temp), "%s,%d,%d,%x,1,%x", conn_get_chatname(conn_pl2), pl2_country, pl2_colour, anongame_wol_player_get_address(player2), anongame_wol_player_get_port(player2)); - std::strcat(temp, _temp); + /* GameJoinie informations */ + std::snprintf(_temp, sizeof(_temp), "%s,%d,%d,%x,1,%x", conn_get_chatname(conn_pl2), pl2_country, pl2_colour, anongame_wol_player_get_address(player2), anongame_wol_player_get_port(player2)); + std::strcat(temp, _temp); - _send_msg(conn_pl1, "PRIVMSG", temp); - _send_msg(conn_pl2, "PRIVMSG", temp); - } - else - ERROR1("undefined channel type for %s channel", channelname); + _send_msg(conn_pl1, "PRIVMSG", temp); + _send_msg(conn_pl2, "PRIVMSG", temp); + } + else + ERROR1("undefined channel type for %s channel", channelname); } return 0; case CLIENTTAG_YURISREV_UINT: { diff --git a/src/bnetd/connection.cpp b/src/bnetd/connection.cpp index e5bfb99..720381f 100644 --- a/src/bnetd/connection.cpp +++ b/src/bnetd/connection.cpp @@ -181,7 +181,7 @@ namespace pvpgn if (now == (std::time_t)0) /* zero means user logged out before expiration */ { - eventlog(eventlog_level_trace, __FUNCTION__, "[%d] connection allready closed", conn_get_socket(c)); + eventlog(eventlog_level_trace, __FUNCTION__, "[%d] connection already closed", conn_get_socket(c)); return; } @@ -699,7 +699,7 @@ namespace pvpgn lua_handle_user(c, NULL, NULL, luaevent_user_disconnect); #endif - if (account_get_conn(c->protocol.account) == c) /* make sure you don't set this when allready on new conn (relogin with same account) */ + if (account_get_conn(c->protocol.account) == c) /* make sure you don't set this when already on new conn (relogin with same account) */ account_set_conn(c->protocol.account, NULL); c->protocol.account = NULL; /* the account code will free the memory later */ } @@ -1535,18 +1535,18 @@ namespace pvpgn else { unsigned int userid = 0; str_to_uint(&username[1], &userid); - if (userid != 0){ - if (prefs_get_account_force_username()){ + if (userid != 0) + { + if (prefs_get_account_force_username()) + { t_account* account = accountlist_find_account_by_uid(userid); temp = xstrdup(account_get_name(account)); } - else{ - char uid_string[MAX_USERNAME_LEN] = {}; - std::snprintf(uid_string, sizeof(uid_string), "#%u", userid); - temp = xstrdup(uid_string); - } + else + temp = xstrdup(std::string("#" + userid).c_str()); } - else{ //theoretically this should never happen... + else + { //theoretically this should never happen... eventlog(eventlog_level_error, __FUNCTION__, "got invalid numeric uid \"%s\"", username); // set value that would have been set prior to this bugfix... temp = xstrdup(username); @@ -1922,15 +1922,13 @@ namespace pvpgn if ((!clan) || (clan_get_clantag(clan) != clantag)) { if (!channel) { - char msgtemp[MAX_MESSAGE_LEN]; - std::snprintf(msgtemp, sizeof(msgtemp), "Unable to join channel %s, there is no member of that clan in the channel!", channelname); - message_send_text(c, message_type_error, c, msgtemp); + message_send_text(c, message_type_error, c, std::string("Unable to join channel " + std::string(channelname) + ", there is no member of that clan in the channel!").c_str()); - if (conn_get_game(c) || c->protocol.chat.channel == NULL) { + if (conn_get_game(c) || c->protocol.chat.channel == NULL) + { // FIXME: This is not tested to be according to battle.net!! // This is fix for empty clan channels with preventing to join CHANNEL_NAME_BANNED when is used _handle_join_command - std::snprintf(msgtemp, sizeof(msgtemp), "You have been redirected to %s.", CHANNEL_NAME_BANNED); - message_send_text(c, message_type_error, c, msgtemp); + message_send_text(c, message_type_error, c, std::string("You have been redirected to " + std::string(CHANNEL_NAME_BANNED)).c_str()); channel = channellist_find_channel_by_name(CHANNEL_NAME_BANNED, conn_get_country(c), realm_get_name(conn_get_realm(c))); } else diff --git a/src/bnetd/game.cpp b/src/bnetd/game.cpp index d258a17..eeec608 100644 --- a/src/bnetd/game.cpp +++ b/src/bnetd/game.cpp @@ -1885,7 +1885,7 @@ namespace pvpgn if (game->reported_results[i]) { - eventlog(eventlog_level_error, __FUNCTION__, "player \"%s\" allready reported results - skipping this report", account_get_name(account)); + eventlog(eventlog_level_error, __FUNCTION__, "player \"%s\" already reported results - skipping this report", account_get_name(account)); return -1; } diff --git a/src/bnetd/handle_bnet.cpp b/src/bnetd/handle_bnet.cpp index 00c408c..0ef082e 100644 --- a/src/bnetd/handle_bnet.cpp +++ b/src/bnetd/handle_bnet.cpp @@ -1677,7 +1677,7 @@ namespace pvpgn eventlog(eventlog_level_info, __FUNCTION__, "[%d] login for \"%s\" refused (already logged in)", conn_get_socket(c), username); if (supports_locked_reply) { bn_int_set(&rpacket->u.server_loginreply1.message, SERVER_LOGINREPLY2_MESSAGE_LOCKED); - packet_append_string(rpacket, "This account is allready logged in."); + packet_append_string(rpacket, "This account is already logged in."); } else { bn_int_set(&rpacket->u.server_loginreply1.message, SERVER_LOGINREPLY2_MESSAGE_BADPASS); @@ -2131,7 +2131,7 @@ namespace pvpgn int i; const char * client_password_proof; - /* PELISH: This can not occur - We allready tested packet size which must be wrong firstly. + /* PELISH: This can not occur - We already tested packet size which must be wrong firstly. Also pvpgn will crash when will dereferencing NULL pointer (so we cant got this errorlog message) I vote for deleting this "if" */ if (!(client_password_proof = (const char*)packet_get_data_const(packet, offsetof(t_client_logonproofreq, client_password_proof), 20))) { @@ -2557,12 +2557,12 @@ namespace pvpgn if (!(team = account_find_team_by_accounts(members[0], members, ctag))) { - team = create_team(members, ctag); //no need to free on return -1 because it's allready in teamlist + team = create_team(members, ctag); //no need to free on return -1 because it's already in teamlist eventlog(eventlog_level_trace, __FUNCTION__, "this team has never played before, creating new team"); } else { - eventlog(eventlog_level_trace, __FUNCTION__, "this team has allready played before"); + eventlog(eventlog_level_trace, __FUNCTION__, "this team has already played before"); } teamid = team_get_teamid(team); @@ -3502,7 +3502,7 @@ namespace pvpgn } if ((channel = conn_get_channel(c)) && (strcasecmp(channel_get_name(channel), cname) == 0)) - return 0; //we are allready in this channel + return 0; //we are already in this channel std::string tmpstr; clienttag = conn_get_clienttag(c); @@ -5125,12 +5125,12 @@ namespace pvpgn (conn_account = conn_get_account(conn)))) { response_code = CLAN_RESPONSE_NOT_FOUND; - // target user allready in a clan or creating a clan + // target user already in a clan or creating a clan } else if (account_get_clanmember_forced(conn_get_account(conn))) { response_code = CLAN_RESPONSE_NOT_FOUND; - // clan allready full + // clan allready ful } else if (clan_get_member_count(clan) >= prefs_get_clan_max_members()) { response_code = CLAN_RESPONSE_CLAN_FULL; @@ -5232,14 +5232,17 @@ namespace pvpgn clan_remove_member(clan, member); bn_byte_set(&rpacket->u.server_clan_invitereply.result, CLAN_RESPONSE_CLAN_FULL); } - else { - char channelname[10]; + else + { clanmember_set_fullmember(member, 1); - std::snprintf(channelname, sizeof(channelname), "Clan %s", clantag_to_str(clan_get_clantag(clan))); - if (conn_get_channel(c)) { + if (conn_get_channel(c)) + { conn_update_w3_playerinfo(c); channel_set_userflags(c); - if (conn_set_channel(c, channelname) < 0) { + + std::string channelname("Clan " + std::string(clantag_to_str(clan_get_clantag(clan)))); + if (conn_set_channel(c, channelname.c_str()) < 0) + { conn_set_channel(c, CHANNEL_NAME_BANNED); /* should not fail */ } clanmember_set_online(c); diff --git a/src/bnetd/handle_irc.cpp b/src/bnetd/handle_irc.cpp index 2c249f9..01a7f34 100644 --- a/src/bnetd/handle_irc.cpp +++ b/src/bnetd/handle_irc.cpp @@ -325,8 +325,7 @@ namespace pvpgn bnet_hash(&passhash, std::strlen(pass), pass); - std::snprintf(msgtemp, sizeof(msgtemp), "Trying to create account \"%s\" with password \"%s\"", username, pass); - message_send_text(conn, message_type_info, conn, msgtemp); + message_send_text(conn, message_type_info, conn, std::string("Trying to create account \"" + std::string(username) + "\" with password \"" + std::string(pass) + "\"").c_str()); temp = accountlist_create_account(username, hash_get_str(passhash)); if (!temp) { @@ -336,16 +335,13 @@ namespace pvpgn break; } - std::snprintf(msgtemp, sizeof(msgtemp), "Account " UID_FORMAT " created.", account_get_uid(temp)); - message_send_text(conn, message_type_info, conn, msgtemp); + message_send_text(conn, message_type_info, conn, std::string("Account #" + std::to_string(account_get_uid(temp)) + " created.")); eventlog(eventlog_level_debug, __FUNCTION__, "[%d] account \"%s\" created", conn_get_socket(conn), username); conn_unget_chatname(conn, username); } else { - char tmp[MAX_IRC_MESSAGE_LEN + 1]; - message_send_text(conn, message_type_notice, NULL, "Invalid arguments for NICKSERV"); - std::snprintf(tmp, sizeof(tmp), ":Unrecognized command \"%s\"", text); - message_send_text(conn, message_type_notice, NULL, tmp); + message_send_text(conn, message_type_notice, nullptr, "Invalid arguments for NICKSERV"); + message_send_text(conn, message_type_notice, nullptr, std::string(":Unrecognized command \"" + std::string(text) + "\"").c_str()); } } else if (conn_get_state(conn) == conn_state_loggedin) { @@ -443,38 +439,30 @@ namespace pvpgn static int _handle_list_command(t_connection * conn, int numparams, char ** params, char * text) { - char temp[MAX_IRC_MESSAGE_LEN]; - + std::string tmp; irc_send(conn, RPL_LISTSTART, "Channel :Users Names"); /* backward compatibility */ - if (numparams == 0) { + if (numparams == 0) + { t_elem const * curr; class_topic Topic; LIST_TRAVERSE_CONST(channellist(), curr) { t_channel const * channel = (const t_channel*)elem_get_data(curr); - char const * tempname; + char const * tempname = irc_convert_channel(channel, conn); std::string topicstr = Topic.get(channel_get_name(channel)); - tempname = irc_convert_channel(channel, conn); - /* FIXME: AARON: only list channels like in /channels command */ - if (topicstr.empty() == false) { - if (std::strlen(tempname) + 1 + 20 + 1 + 1 + std::strlen(topicstr.c_str()) < MAX_IRC_MESSAGE_LEN) - std::snprintf(temp, sizeof(temp), "%s %u :%s", tempname, channel_get_length(channel), topicstr.c_str()); - else - eventlog(eventlog_level_warn, __FUNCTION__, "LISTREPLY length exceeded"); - } - else { - if (std::strlen(tempname) + 1 + 20 + 1 + 1 < MAX_IRC_MESSAGE_LEN) - std::snprintf(temp, sizeof(temp), "%s %u :", tempname, channel_get_length(channel)); - else - eventlog(eventlog_level_warn, __FUNCTION__, "LISTREPLY length exceeded"); - } - irc_send(conn, RPL_LIST, temp); + tmp = std::string(tempname) + " " + std::to_string(channel_get_length(channel)) + " :" + topicstr; + + if (tmp.length() > MAX_IRC_MESSAGE_LEN) + eventlog(eventlog_level_warn, __FUNCTION__, "LISTREPLY length exceeded"); + + irc_send(conn, RPL_LIST, tmp.c_str()); } } - else if (numparams >= 1) { + else if (numparams >= 1) + { int i; char ** e; class_topic Topic; @@ -482,40 +470,33 @@ namespace pvpgn e = irc_get_listelems(params[0]); /* FIXME: support wildcards! */ - for (i = 0; ((e) && (e[i])); i++) { - t_channel const * channel; - char const * verytemp; /* another good example for creative naming conventions :) */ - char const * tempname; - std::string topicstr; - - verytemp = irc_convert_ircname(e[i]); + for (i = 0; ((e) && (e[i])); i++) + { + char const * verytemp = irc_convert_ircname(e[i]); if (!verytemp) continue; /* something is wrong with the name ... */ - channel = channellist_find_channel_by_name(verytemp, NULL, NULL); + + t_channel const * channel = channellist_find_channel_by_name(verytemp, NULL, NULL); if (!channel) continue; /* channel doesn't exist */ - topicstr = Topic.get(channel_get_name(channel)); - tempname = irc_convert_channel(channel, conn); + std::string topicstr = Topic.get(channel_get_name(channel)); + char const * tempname = irc_convert_channel(channel, conn); - if (topicstr.c_str()) { - if (std::strlen(tempname) + 1 + 20 + 1 + 1 + std::strlen(topicstr.c_str()) < MAX_IRC_MESSAGE_LEN) - std::snprintf(temp, sizeof(temp), "%s %u :%s", tempname, channel_get_length(channel), topicstr.c_str()); - else - eventlog(eventlog_level_warn, __FUNCTION__, "LISTREPLY length exceeded"); - } - else { - if (std::strlen(tempname) + 1 + 20 + 1 + 1 < MAX_IRC_MESSAGE_LEN) - std::snprintf(temp, sizeof(temp), "%s %u :", tempname, channel_get_length(channel)); - else - eventlog(eventlog_level_warn, __FUNCTION__, "LISTREPLY length exceeded"); - } - irc_send(conn, RPL_LIST, temp); + tmp = std::string(tempname) + " " + std::to_string(channel_get_length(channel)) + " :" + topicstr; + + if (tmp.length() > MAX_IRC_MESSAGE_LEN) + eventlog(eventlog_level_warn, __FUNCTION__, "LISTREPLY length exceeded"); + + irc_send(conn, RPL_LIST, tmp.c_str()); } + if (e) irc_unget_listelems(e); } + irc_send(conn, RPL_LISTEND, ":End of LIST command"); + return 0; } @@ -589,30 +570,29 @@ namespace pvpgn static int _handle_whois_command(t_connection * conn, int numparams, char ** params, char * text) { - char temp[MAX_IRC_MESSAGE_LEN]; - char temp2[MAX_IRC_MESSAGE_LEN]; - if (numparams >= 1) { + std::string tmp; + + if (numparams >= 1) + { int i; - char ** e; + char ** e = irc_get_listelems(params[0]); t_connection * c; t_channel * chan; - temp[0] = '\0'; - temp2[0] = '\0'; - e = irc_get_listelems(params[0]); - for (i = 0; ((e) && (e[i])); i++) { - if ((c = connlist_find_connection_by_accountname(e[i]))) { + for (i = 0; ((e) && (e[i])); i++) + { + if ((c = connlist_find_connection_by_accountname(e[i]))) + { if (prefs_get_hide_addr() && !(account_get_command_groups(conn_get_account(conn)) & command_get_group("/admin-addr"))) - std::snprintf(temp, sizeof(temp), "%s %s hidden * :%s", e[i], clienttag_uint_to_str(conn_get_clienttag(c)), "PvPGN user"); + tmp = std::string(e[i]) + " " + std::string(clienttag_uint_to_str(conn_get_clienttag(c))) + " hidden * :PvPGN user"; else - std::snprintf(temp, sizeof(temp), "%s %s %s * :%s", e[i], clienttag_uint_to_str(conn_get_clienttag(c)), addr_num_to_ip_str(conn_get_addr(c)), "PvPGN user"); - irc_send(conn, RPL_WHOISUSER, temp); + tmp = std::string(e[i]) + " " + std::string(clienttag_uint_to_str(conn_get_clienttag(c))) + " " + std::string(addr_num_to_ip_str(conn_get_addr(c))) + " * :PvPGN user"; + irc_send(conn, RPL_WHOISUSER, tmp.c_str()); - if ((chan = conn_get_channel(conn))) { - char flg; - unsigned int flags; - - flags = conn_get_flags(c); + if ((chan = conn_get_channel(conn))) + { + std::string flg; + auto flags = conn_get_flags(c); if (flags & MF_BLIZZARD) flg = '@'; @@ -620,9 +600,11 @@ namespace pvpgn flg = '%'; else if (flags & MF_VOICE) flg = '+'; - else flg = ' '; - std::snprintf(temp2, sizeof(temp2), "%s :%c%s", e[i], flg, irc_convert_channel(chan, conn)); - irc_send(conn, RPL_WHOISCHANNELS, temp2); + else + flg = ' '; + + tmp = std::string(e[i]) + " :" + flg + std::string(irc_convert_channel(chan, conn)); + irc_send(conn, RPL_WHOISCHANNELS, tmp.c_str()); } } diff --git a/src/bnetd/handle_irc_common.cpp b/src/bnetd/handle_irc_common.cpp index 1fed0e4..fc480ca 100644 --- a/src/bnetd/handle_irc_common.cpp +++ b/src/bnetd/handle_irc_common.cpp @@ -258,18 +258,16 @@ namespace pvpgn } if (handle_irc_common_con_command(conn, command, numparams, params, text) != -1) {} - else if (conn_get_state(conn) != conn_state_loggedin) { - char temp[MAX_IRC_MESSAGE_LEN + 1]; - - if ((38 + std::strlen(command) + 16 + 1) < sizeof(temp)) { - std::snprintf(temp, sizeof(temp), ":Unrecognized command \"%s\" (before login)", command); - irc_send(conn, ERR_UNKNOWNCOMMAND, temp); - } - else { + else if (conn_get_state(conn) != conn_state_loggedin) + { + std::string tmp(":Unrecognized command \"" + std::string(command) + "\" (before login)"); + if (tmp.length() > MAX_IRC_MESSAGE_LEN) + irc_send(conn, ERR_UNKNOWNCOMMAND, tmp.c_str()); + else irc_send(conn, ERR_UNKNOWNCOMMAND, ":Unrecognized command (before login)"); - } } - else { + else + { /* command is handled later */ unrecognized_before = 1; } diff --git a/src/bnetd/handle_wol.cpp b/src/bnetd/handle_wol.cpp index 5ab8199..8956351 100644 --- a/src/bnetd/handle_wol.cpp +++ b/src/bnetd/handle_wol.cpp @@ -233,11 +233,12 @@ namespace pvpgn tempapgar = conn_wol_get_apgar(conn); temphash = account_get_wol_apgar(a); - if (connlist_find_connection_by_account(a) && prefs_get_kick_old_login() == 0) { - std::snprintf(temp, sizeof(temp), "%s :Account is already in use!", conn_get_loggeduser(conn)); - irc_send(conn, ERR_NICKNAMEINUSE, temp); + if (connlist_find_connection_by_account(a) && prefs_get_kick_old_login() == 0) + { + irc_send(conn, ERR_NICKNAMEINUSE, std::string(std::string(conn_get_loggeduser(conn)) + " :Account is already in use!").c_str()); } - else if (account_get_auth_lock(a) == 1) { + else if (account_get_auth_lock(a) == 1) + { /* FIXME: Send real error code */ message_send_text(conn, message_type_notice, NULL, "Authentication rejected (account is locked) "); } @@ -280,29 +281,28 @@ namespace pvpgn static int handle_wol_send_claninfo(t_connection * conn, t_clan * clan) { - char _temp[MAX_IRC_MESSAGE_LEN]; unsigned int clanid; const char * clantag; const char * clanname; - std::memset(_temp, 0, sizeof(_temp)); - - if (!conn) { + if (!conn) + { ERROR0("got NULL connection"); return -1; } - if (clan) { + if (clan) + { clanid = clan_get_clanid(clan); clantag = clantag_to_str(clan_get_clantag(clan)); clanname = clan_get_name(clan); - std::snprintf(_temp, sizeof(_temp), "%u`%s`%s`0`0`1`0`0`0`0`0`0`0`x`x`x", clanid, clanname, clantag); - irc_send(conn, RPL_BATTLECLAN, _temp); + irc_send(conn, RPL_BATTLECLAN, std::string(std::to_string(clanid) + "`" + std::string(clanname) + "`" + std::string(clantag) + "`0`0`1`0`0`0`0`0`0`0`x`x`x").c_str()); } - else { - std::snprintf(_temp, sizeof(_temp), ":ID does not exist"); - irc_send(conn, ERR_IDNOEXIST, _temp); + else + { + irc_send(conn, ERR_IDNOEXIST, ":ID does not exist"); } + return 0; } @@ -420,8 +420,7 @@ namespace pvpgn } } else { - std::snprintf(msgtemp, sizeof(msgtemp), "%s :No such channel", e[0]); - irc_send(conn, ERR_NOSUCHCHANNEL, msgtemp); + irc_send(conn, ERR_NOSUCHCHANNEL, std::string(std::string(e[0]) + " :No such channel").c_str()); } } else { @@ -717,17 +716,19 @@ namespace pvpgn * :[servername] 379 [username] :none none none [oldversnum] [SKU] REQ */ - if (numparams == 2) { + if (numparams == 2) + { clienttag = tag_sku_to_uint(std::atoi(params[0])); if (clienttag != CLIENTTAG_WWOL_UINT) conn_set_clienttag(conn, clienttag); - std::snprintf(temp, sizeof(temp), ":none none none 1 %s NONREQ", params[0]); - eventlog(eventlog_level_debug, __FUNCTION__, "[** WOL **] VERCHK %s", temp); - irc_send(conn, RPL_VERCHK_NONREQ, temp); + std::string tmp(":none none none 1 " + std::string(params[0]) + " NONREQ"); + eventlog(eventlog_level_debug, __FUNCTION__, "[** WOL **] VERCHK %s", tmp.c_str()); + irc_send(conn, RPL_VERCHK_NONREQ, tmp.c_str()); } else irc_send(conn, ERR_NEEDMOREPARAMS, "VERCHK :Not enough parameters"); + return 0; } @@ -829,28 +830,24 @@ namespace pvpgn static int _handle_getcodepage_command(t_connection * conn, int numparams, char ** params, char * text) { - char temp[MAX_IRC_MESSAGE_LEN]; - char _temp[MAX_IRC_MESSAGE_LEN]; + std::string temp; - std::memset(temp, 0, sizeof(temp)); - std::memset(_temp, 0, sizeof(_temp)); - - if ((numparams >= 1) && (params[0])) { - int i; - for (i = 0; i < numparams; i++) { - t_connection * user; + if ((numparams >= 1) && (params[0])) + { + for (auto i = 0; i < numparams; i++) + { int codepage = 0; - - if (user = connlist_find_connection_by_accountname(params[i])) + t_connection * user = connlist_find_connection_by_accountname(params[i]); + if (user) codepage = conn_wol_get_codepage(user); - std::snprintf(_temp, sizeof(_temp), "%s`%u", params[i], codepage); - std::strcat(temp, _temp); + temp.append(std::string(params[i]) + "`" + std::to_string(codepage)); if (i < numparams - 1) - std::strcat(temp, "`"); + temp.append("`"); } - irc_send(conn, RPL_GET_CODEPAGE, temp); + + irc_send(conn, RPL_GET_CODEPAGE, temp.c_str()); } else irc_send(conn, ERR_NEEDMOREPARAMS, "GETCODEPAGE :Not enough parameters"); @@ -874,27 +871,22 @@ namespace pvpgn static int _handle_getlocale_command(t_connection * conn, int numparams, char ** params, char * text) { - char temp[MAX_IRC_MESSAGE_LEN]; - char _temp[MAX_IRC_MESSAGE_LEN]; + std::string temp; - std::memset(temp, 0, sizeof(temp)); - std::memset(_temp, 0, sizeof(_temp)); - - if ((numparams >= 1) && (params[0])) { - int i; - for (i = 0; i < numparams; i++) { - t_account * account; + if ((numparams >= 1) && (params[0])) + { + for (auto i = 0; i < numparams; i++) + { int locale = 0; - - if (account = accountlist_find_account(params[i])) + t_account * account = accountlist_find_account(params[i]); + if (account) locale = account_get_locale(account); - std::snprintf(_temp, sizeof(_temp), "%s`%u", params[i], locale); - std::strcat(temp, _temp); + temp.append(std::string(params[i]) + "`" + std::to_string(locale)); if (i < numparams - 1) - std::strcat(temp, "`"); + temp.append("`"); } - irc_send(conn, RPL_GET_LOCALE, temp); + irc_send(conn, RPL_GET_LOCALE, temp.c_str()); } else irc_send(conn, ERR_NEEDMOREPARAMS, "GETLOCALE :Not enough parameters"); @@ -903,8 +895,6 @@ namespace pvpgn static int _handle_getinsider_command(t_connection * conn, int numparams, char ** params, char * text) { - char _temp[MAX_IRC_MESSAGE_LEN]; - /** * Here is imput expected: * GETINSIDER [nickname] @@ -912,14 +902,11 @@ namespace pvpgn * :[servername] 399 [nick] [nickname]`0 */ - std::memset(_temp, 0, sizeof(_temp)); - - if ((numparams >= 1) && (params[0])) { - std::snprintf(_temp, sizeof(_temp), "%s`%u", params[0], 0); - irc_send(conn, RPL_GET_INSIDER, _temp); - } + if ((numparams >= 1) && (params[0])) + irc_send(conn, RPL_GET_INSIDER, std::string(std::string(params[0]) + "`0").c_str()); else irc_send(conn, ERR_NEEDMOREPARAMS, "GETINSIDER :Not enough parameters"); + return 0; } @@ -970,52 +957,63 @@ namespace pvpgn return 0; } - if (!(gamename) || !(game = gamelist_find_game_available(gamename, conn_get_clienttag(conn), game_type_all))) { - std::snprintf(_temp, sizeof(_temp), "%s :Game channel has closed", e[0]); - irc_send(conn, ERR_GAMEHASCLOSED, _temp); + if (!(gamename) || !(game = gamelist_find_game_available(gamename, conn_get_clienttag(conn), game_type_all))) + { + irc_send(conn, ERR_GAMEHASCLOSED, std::string(std::string(e[0]) + " :Game channel has closed").c_str()); + if (e) irc_unget_listelems(e); + return 0; } channel = game_get_channel(game); - if (game_get_ref(game) == game_get_maxplayers(game)) { - std::snprintf(_temp, sizeof(_temp), "%s :Channel is full", e[0]); - irc_send(conn, ERR_CHANNELISFULL, _temp); + if (game_get_ref(game) == game_get_maxplayers(game)) + { + irc_send(conn, ERR_CHANNELISFULL, std::string(std::string(e[0]) + " :Channel is full.").c_str()); + if (e) irc_unget_listelems(e); + return 0; } - if (channel_check_banning(channel, conn)) { - std::snprintf(_temp, sizeof(_temp), "%s :You are banned from that channel.", e[0]); - irc_send(conn, ERR_BANNEDFROMCHAN, _temp); + if (channel_check_banning(channel, conn)) + { + irc_send(conn, ERR_BANNEDFROMCHAN, std::string(std::string(e[0]) + " :You are banned from that channel.").c_str()); + if (e) irc_unget_listelems(e); + return 0; } - if (std::strcmp(game_get_pass(game), "") != 0) { - if ((numparams == 3) && (params[2]) && (std::strcmp(params[2], game_get_pass(game)) == 0)) { - strcpy(gamepass, params[2]); + if (std::strcmp(game_get_pass(game), "") != 0) + { + if ((numparams == 3) && (params[2]) && (std::strcmp(params[2], game_get_pass(game)) == 0)) + { + std::strcpy(gamepass, params[2]); } - else { - std::snprintf(_temp, sizeof(_temp), "%s :Bad password", e[0]); - irc_send(conn, ERR_BADCHANNELKEY, _temp); + else + { + irc_send(conn, ERR_BADCHANNELKEY, std::string(std::string(e[0]) + ":Bad password").c_str()); + if (e) irc_unget_listelems(e); + return 0; } } gametype = game_get_type(game); - if ((conn_set_game(conn, gamename, gamepass, "", gametype, 0)) < 0) { - std::snprintf(_temp, sizeof(_temp), "%s :JOINGAME failed", e[0]); - irc_send(conn, ERR_GAMEHASCLOSED, _temp); + if ((conn_set_game(conn, gamename, gamepass, "", gametype, 0)) < 0) + { + irc_send(conn, ERR_GAMEHASCLOSED, std::string(std::string(e[0]) + " :JOINGAME failed").c_str()); } - else { + else + { /*conn_set_channel()*/ channel = game_get_channel(game); conn_set_channel_var(conn, channel); @@ -1048,9 +1046,9 @@ namespace pvpgn irc_send_rpl_namreply(conn, channel); } - else { - std::snprintf(_temp, sizeof(_temp), "%s :JOINGAME failed", e[0]); - irc_send(conn, ERR_GAMEHASCLOSED, _temp); + else + { + irc_send(conn, ERR_GAMEHASCLOSED, std::string(std::string(e[0]) + " :JOINGAME failed").c_str()); } } } diff --git a/src/bnetd/ladder.cpp b/src/bnetd/ladder.cpp index f4abafd..00e7128 100644 --- a/src/bnetd/ladder.cpp +++ b/src/bnetd/ladder.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #ifdef HAVE_SYS_STAT_H # include @@ -65,10 +66,10 @@ namespace pvpgn static t_xplevel_entry * xplevels; int w3_xpcalc_maxleveldiff; - const char * ladder_id_str[] = { "0", "1", "", "3", "", "solo", "team", "ffa" }; - const char * bin_ladder_id_str[] = { "", "", "", "I", "", "SOLO", "TEAM", "FFA", "AT" }; - const char * bin_ladder_sort_str[] = { "R", "W", "G", "" }; - const char * bin_ladder_time_str[] = { "A", "C", "" }; + const std::vector ladder_id_str = { "0", "1", "", "3", "", "solo", "team", "ffa" }; + const std::vector bin_ladder_id_str = { "", "", "", "I", "", "SOLO", "TEAM", "FFA", "AT" }; + const std::vector bin_ladder_sort_str = { "R", "W", "G", "" }; + const std::vector bin_ladder_time_str = { "A", "C", "" }; Ladders ladders; @@ -955,9 +956,9 @@ namespace pvpgn { ladderFilename = clienttag_uint_to_str(ladderKey_.getClienttag()); ladderFilename += "_"; - ladderFilename += bin_ladder_time_str[ladderKey_.getLadderTime()]; - ladderFilename += bin_ladder_sort_str[ladderKey_.getLadderSort()]; - ladderFilename += bin_ladder_id_str[ladderKey_.getLadderId()]; + ladderFilename += bin_ladder_time_str.at(static_cast(ladderKey_.getLadderTime())); + ladderFilename += bin_ladder_sort_str.at(static_cast(ladderKey_.getLadderSort())); + ladderFilename += bin_ladder_id_str.at(static_cast(ladderKey_.getLadderId())); ladderFilename += "_LADDER"; } diff --git a/src/bnetd/ladder.h b/src/bnetd/ladder.h index 89a5eaf..3438f0c 100644 --- a/src/bnetd/ladder.h +++ b/src/bnetd/ladder.h @@ -44,7 +44,7 @@ namespace pvpgn ladder_sort_default } t_ladder_sort; - extern const char * bin_ladder_sort_str[]; + extern const std::vector bin_ladder_sort_str; typedef enum { @@ -53,7 +53,7 @@ namespace pvpgn ladder_time_default } t_ladder_time; - extern const char * bin_ladder_time_str[]; + extern const std::vector bin_ladder_time_str; typedef enum { @@ -66,8 +66,8 @@ namespace pvpgn ladder_id_ateam = 8 } t_ladder_id; - const extern char * ladder_id_str[]; - const extern char * bin_ladder_id_str[]; + const extern std::vector ladder_id_str; + const extern std::vector bin_ladder_id_str; typedef enum { diff --git a/src/bnetd/main.cpp b/src/bnetd/main.cpp index 2f1512f..63dc742 100644 --- a/src/bnetd/main.cpp +++ b/src/bnetd/main.cpp @@ -154,7 +154,7 @@ static void oom_free(void) FILE *hexstrm = NULL; -char serviceLongName[] = "PvPGN service"; +char serviceLongName[] = PVPGN_SOFTWARE " service"; char serviceName[] = "pvpgn"; char serviceDescription[] = "Player vs. Player Gaming Network - Server"; diff --git a/src/common/conf.cpp b/src/common/conf.cpp index c5b8e3a..fedcde8 100644 --- a/src/common/conf.cpp +++ b/src/common/conf.cpp @@ -21,6 +21,7 @@ #include #include +#include #include "common/eventlog.h" #include "common/xalloc.h" @@ -88,9 +89,7 @@ namespace pvpgn extern const char* conf_get_int(unsigned ival) { - static char tmpbuf[128]; - std::snprintf(tmpbuf, sizeof(tmpbuf), "%u", ival); - return tmpbuf; + return std::to_string(ival).c_str(); } extern const char* conf_get_bool(unsigned ival) diff --git a/src/common/setup_before.h b/src/common/setup_before.h index d7cbe01..8c31bec 100644 --- a/src/common/setup_before.h +++ b/src/common/setup_before.h @@ -201,10 +201,10 @@ const char * const BNETD_SERV_ADDRS = ""; /* this means none */ const int BNETD_SERV_PORT = 6112; const char * const BNETD_W3ROUTE_ADDR = "0.0.0.0"; const int BNETD_W3ROUTE_PORT = 6200; -const char * const BNETD_SERVERNAME = "PvPGN Realm"; +const char * const BNETD_SERVERNAME = PVPGN_SOFTWARE " Realm"; const char * const BNETD_IRC_ADDRS = ""; /* this means none */ const int BNETD_IRC_PORT = 6667; /* used if port not specified */ -const char * const BNETD_IRC_NETWORK_NAME = "PvPGN"; +const char * const BNETD_IRC_NETWORK_NAME = PVPGN_SOFTWARE; const char * const BNETD_TRACK_ADDRS = "track.pvpgn.org"; const int BNETD_TRACK_PORT = 6114; /* use this port if not specified */ const int BNETD_DEF_TEST_PORT = 6112; /* default guess for UDP test port */ diff --git a/src/win32/winmain.cpp b/src/win32/winmain.cpp index 2d7ee17..1a57e7d 100644 --- a/src/win32/winmain.cpp +++ b/src/win32/winmain.cpp @@ -24,6 +24,8 @@ #include "winmain.h" #include +#include +#include #include #if _DEBUG #include @@ -32,7 +34,6 @@ #include #include #include -#include #include #include @@ -71,7 +72,8 @@ namespace pvpgn static void guiThread(void*); static void guiAddText(const char *, COLORREF); static void guiAddText_user(const char *, COLORREF); - static void guiDEAD(char*); + static void guiDEAD(std::string msg); + static void guiDEAD(char* msg); static void guiMoveWindow(HWND, RECT*); static void guiClearLogWindow(void); static void guiKillTrayIcon(void); @@ -159,7 +161,8 @@ namespace pvpgn wc.lpszClassName = "BnetdWndClass"; wc.hIconSm = NULL; - if (!RegisterClassEx(&wc)) guiDEAD("cant register WNDCLASS"); + if (!RegisterClassEx(&wc)) + guiDEAD("cant register WNDCLASS"); gui.hwnd = CreateWindowEx( 0, @@ -175,7 +178,8 @@ namespace pvpgn (HINSTANCE)param, NULL); - if (!gui.hwnd) guiDEAD("cant create window"); + if (!gui.hwnd) + guiDEAD("cant create window"); ShowWindow(gui.hwnd, SW_SHOW); SetEvent(gui.event_ready); @@ -228,7 +232,8 @@ namespace pvpgn 0, NULL); - if (!ghwndConsole) return FALSE; + if (!ghwndConsole) + return FALSE; gui.hwndUsers = CreateWindowEx( WS_EX_CLIENTEDGE, @@ -242,7 +247,8 @@ namespace pvpgn 0, NULL); - if (!gui.hwndUsers) return FALSE; + if (!gui.hwndUsers) + return FALSE; //amadeo: temp. button for useredit until rightcklick is working.... gui.hwndUserEditButton = CreateWindow( @@ -256,7 +262,8 @@ namespace pvpgn 0, NULL); - if (!gui.hwndUserEditButton) return FALSE; + if (!gui.hwndUserEditButton) + return FALSE; gui.hwndUserCount = CreateWindowEx( WS_EX_CLIENTEDGE, @@ -270,13 +277,14 @@ namespace pvpgn 0, NULL); - if (!gui.hwndUserCount) return FALSE; + if (!gui.hwndUserCount) + return FALSE; SendMessage(gui.hwndUserCount, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), 0); SendMessage(gui.hwndUsers, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), 0); SendMessage(gui.hwndUserEditButton, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), 0); BringWindowToTop(gui.hwndUsers); - strcpy(gui.szDefaultStatus, "Void"); + std::strcpy(gui.szDefaultStatus, "Void"); gui.y_ratio = (100 << 10) / 100; gui.x_ratio = (0 << 10) / 100; @@ -346,20 +354,24 @@ namespace pvpgn static int guiOnShellNotify(int uID, int uMessage) { - if (uID == IDI_TRAY) { - if (uMessage == WM_LBUTTONDBLCLK) { + if (uID == IDI_TRAY) + { + if (uMessage == WM_LBUTTONDBLCLK) + { if (!IsWindowVisible(gui.hwnd)) ShowWindow(gui.hwnd, SW_RESTORE); SetForegroundWindow(gui.hwnd); } - else if (uMessage == WM_RBUTTONDOWN) { + else if (uMessage == WM_RBUTTONDOWN) + { POINT cp; GetCursorPos(&cp); SetForegroundWindow(gui.hwnd); TrackPopupMenu(gui.hmenuTray, TPM_LEFTALIGN | TPM_LEFTBUTTON, cp.x, cp.y, 0, gui.hwnd, NULL); } } + return 0; } @@ -385,11 +397,13 @@ namespace pvpgn static void guiOnClose(HWND hwnd) { guiKillTrayIcon(); - if (!gui.main_finished) { + if (!gui.main_finished) + { eventlog(eventlog_level_debug, __FUNCTION__, "GUI wants server dead..."); - exit(0); + std::exit(0); } - else { + else + { eventlog(eventlog_level_debug, __FUNCTION__, "GUI wants to exit..."); eventlog_close(); SetEvent(gui.event_ready); @@ -400,7 +414,8 @@ namespace pvpgn { int cy_console, cy_edge, cx_edge, cy_frame, cy_status; - if (state == SIZE_MINIMIZED) { + if (state == SIZE_MINIMIZED) + { NOTIFYICONDATA dta; dta.cbSize = sizeof(NOTIFYICONDATA); @@ -409,15 +424,14 @@ namespace pvpgn dta.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; dta.uCallbackMessage = WM_SHELLNOTIFY; dta.hIcon = LoadIcon(GetWindowInstance(hwnd), MAKEINTRESOURCE(IDI_ICON1)); - strcpy(dta.szTip, "PvPGN"); - strcat(dta.szTip, " "); - strcat(dta.szTip, PVPGN_VERSION); + std::strcpy(dta.szTip, std::string(std::string(PVPGN_SOFTWARE) + " " + std::string(PVPGN_VERSION)).c_str()); Shell_NotifyIcon(NIM_ADD, &dta); ShowWindow(hwnd, SW_HIDE); return; } - if (state == SIZE_RESTORED) { + if (state == SIZE_RESTORED) + { NOTIFYICONDATA dta; dta.hWnd = hwnd; @@ -456,7 +470,8 @@ namespace pvpgn { POINT p; - if (hwnd == hwndCursor && codeHitTest == HTCLIENT) { + if (hwnd == hwndCursor && codeHitTest == HTCLIENT) + { GetCursorPos(&p); ScreenToClient(hwnd, &p); if (PtInRect(&gui.rectHDivider, p)) @@ -475,7 +490,8 @@ namespace pvpgn p.x = x; p.y = y; - if (PtInRect(&gui.rectHDivider, p)) { + if (PtInRect(&gui.rectHDivider, p)) + { SetCapture(hwnd); gui.mode |= MODE_HDIVIDE; } @@ -497,7 +513,8 @@ namespace pvpgn int offset, cy_console, cy_users; RECT r; - if (gui.mode & MODE_HDIVIDE) { + if (gui.mode & MODE_HDIVIDE) + { offset = y - gui.rectHDivider.top; if (!offset) return; cy_console = gui.rectConsole.bottom - gui.rectConsole.top; @@ -552,7 +569,6 @@ namespace pvpgn t_connection * c; t_elem const * curr; t_account * acc; - char UserCount[80]; SendMessage(gui.hwndUsers, LB_RESETCONTENT, 0, 0); @@ -564,9 +580,8 @@ namespace pvpgn SendMessage(gui.hwndUsers, LB_ADDSTRING, 0, (LPARAM)account_get_name(acc)); } - sprintf(UserCount, "%d", connlist_login_get_length()); - strcat(UserCount, " user(s) online:"); - SendMessage(gui.hwndUserCount, WM_SETTEXT, 0, (LPARAM)UserCount); + std::string UserCount(std::to_string(connlist_login_get_length()) + " user(s) online:"); + SendMessage(gui.hwndUserCount, WM_SETTEXT, 0, (LPARAM)UserCount.c_str()); } static void guiAddText(const char *str, COLORREF clr) @@ -577,7 +592,8 @@ namespace pvpgn CHARFORMAT fmt; text_length = SendMessage(ghwndConsole, WM_GETTEXTLENGTH, 0, 0); - if (text_length > 30000) { + if (text_length > 30000) + { ds.cpMin = 0; ds.cpMax = text_length - 30000; SendMessage(ghwndConsole, EM_EXSETSEL, 0, (LPARAM)&ds); @@ -594,17 +610,15 @@ namespace pvpgn fmt.yHeight = 160; fmt.dwEffects = 0; fmt.crTextColor = clr; - strcpy(fmt.szFaceName, "Courier New"); + std::strcpy(fmt.szFaceName, "Courier New"); SendMessage(ghwndConsole, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&fmt); SendMessage(ghwndConsole, EM_REPLACESEL, FALSE, (LPARAM)str); } - static void guiDEAD(char *message) + static void guiDEAD(std::string message) { - char *nl; - char errorStr[4096]; - char *msgLastError; + char *msgLastError = nullptr; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, @@ -615,14 +629,21 @@ namespace pvpgn 0, NULL); - nl = strchr(msgLastError, '\r'); - if (nl) *nl = 0; + char *nl = std::strchr(msgLastError, '\r'); + if (nl) + *nl = 0; - sprintf(errorStr, "%s\nGetLastError() = '%s'\n", message, msgLastError); + std::string errorStr(message + "\nGetLastError() = '" + std::string(msgLastError) + "'\n"); LocalFree(msgLastError); - MessageBox(0, errorStr, "guiDEAD", MB_ICONSTOP | MB_OK); - exit(1); + + MessageBox(0, errorStr.c_str(), "guiDEAD", MB_ICONSTOP | MB_OK); + + std::exit(1); + } + static void guiDEAD(char *message) + { + guiDEAD(std::string(message)); } static void guiMoveWindow(HWND hwnd, RECT* r) @@ -648,11 +669,13 @@ namespace pvpgn BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { - switch (Message) { + switch (Message) + { case WM_INITDIALOG: return TRUE; case WM_COMMAND: - switch (LOWORD(wParam)) { + switch (LOWORD(wParam)) + { case IDOK: EndDialog(hwnd, IDOK); break; @@ -667,34 +690,38 @@ namespace pvpgn BOOL CALLBACK AnnDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { - t_message *message; - switch (Message) { + switch (Message) + { case WM_INITDIALOG: return TRUE; case WM_COMMAND: - switch (LOWORD(wParam)) { + switch (LOWORD(wParam)) + { case IDOK: { - int len = GetWindowTextLength(GetDlgItem(hwnd, IDC_EDIT1)); + int len = GetWindowTextLength(GetDlgItem(hwnd, IDC_EDIT1)); - if (len > 0) { - char* buf; - buf = (char*)GlobalAlloc(GPTR, len + 1); - GetDlgItemText(hwnd, IDC_EDIT1, buf, len + 1); + if (len > 0) + { + char* buf = static_cast(GlobalAlloc(GPTR, len + 1)); + GetDlgItemText(hwnd, IDC_EDIT1, buf, len + 1); - if ((message = message_create(message_type_error, NULL, buf))) { - message_send_all(message); - message_destroy(message); - } + t_message *message = message_create(message_type_error, nullptr, buf); + if (message) + { + message_send_all(message); + message_destroy(message); + } - GlobalFree((HANDLE)buf); - SetDlgItemText(hwnd, IDC_EDIT1, ""); - } - else { - MessageBox(hwnd, "You didn't enter anything!", "Warning", MB_OK); - } - break; + GlobalFree((HGLOBAL)buf); + SetDlgItemText(hwnd, IDC_EDIT1, ""); + } + else + { + MessageBox(hwnd, "You didn't enter anything!", "Warning", MB_OK); + } + break; } } break; @@ -709,9 +736,11 @@ namespace pvpgn BOOL CALLBACK KickDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { - switch (Message) { + switch (Message) + { case WM_INITDIALOG: - if (selected_item[0] != 0) { + if (selected_item[0] != 0) + { SetDlgItemText(hwnd, IDC_EDITKICK, selected_item); } @@ -720,99 +749,104 @@ namespace pvpgn switch (LOWORD(wParam)) { case IDC_KICK_EXECUTE: { - t_connection * conngui; - t_account * accountgui; - BOOL messageq; - BOOL kickq; - char temp[60]; - char ipadr[110]; + GetDlgItemText(hwnd, IDC_EDITKICK, selected_item, 32); - messageq = FALSE; - kickq = FALSE; + t_connection * conngui = connlist_find_connection_by_accountname(selected_item); + t_account * accountgui = accountlist_find_account(selected_item); - GetDlgItemText(hwnd, IDC_EDITKICK, selected_item, 32); + if (conngui == nullptr) + { + std::strcat(selected_item, " could not be found in Userlist!"); + MessageBox(hwnd, selected_item, "Error", MB_OK); + } + else + { + HWND hButton = GetDlgItem(hwnd, IDC_CHECKBAN); + HWND hButton1 = GetDlgItem(hwnd, IDC_CHECKKICK); + HWND hButton2 = GetDlgItem(hwnd, IDC_CHECKADMIN); + HWND hButton3 = GetDlgItem(hwnd, IDC_CHECKMOD); + HWND hButton4 = GetDlgItem(hwnd, IDC_CHECKANN); - conngui = connlist_find_connection_by_accountname(selected_item); - accountgui = accountlist_find_account(selected_item); + BOOL messageq = FALSE; + BOOL kickq = FALSE; - if (conngui == NULL) { - strcat(selected_item, " could not be found in Userlist!"); - MessageBox(hwnd, selected_item, "ERROR", MB_OK); - } - else { + if (SendMessage(hButton2, BM_GETCHECK, 0, 0) == BST_CHECKED) + { + account_set_admin(accountgui); + account_set_command_groups(accountgui, 255); + messageq = TRUE; + } - HWND hButton = GetDlgItem(hwnd, IDC_CHECKBAN); - HWND hButton1 = GetDlgItem(hwnd, IDC_CHECKKICK); - HWND hButton2 = GetDlgItem(hwnd, IDC_CHECKADMIN); - HWND hButton3 = GetDlgItem(hwnd, IDC_CHECKMOD); - HWND hButton4 = GetDlgItem(hwnd, IDC_CHECKANN); + if (SendMessage(hButton3, BM_GETCHECK, 0, 0) == BST_CHECKED) + { + account_set_auth_operator(accountgui, nullptr, 1); + messageq = TRUE; + } - if (SendMessage(hButton2, BM_GETCHECK, 0, 0) == BST_CHECKED) { - account_set_admin(accountgui); - account_set_command_groups(accountgui, 255); - messageq = TRUE; - } + if (SendMessage(hButton4, BM_GETCHECK, 0, 0) == BST_CHECKED) + { + account_set_strattr(accountgui, "BNET\\auth\\announce", "true"); + messageq = TRUE; + } - if (SendMessage(hButton3, BM_GETCHECK, 0, 0) == BST_CHECKED) { - account_set_auth_operator(accountgui, NULL, 1); - messageq = TRUE; - } + if (SendMessage(hButton, BM_GETCHECK, 0, 0) == BST_CHECKED) + { + char temp[60]; + char ipadr[110]; + unsigned int i_GUI; - if (SendMessage(hButton4, BM_GETCHECK, 0, 0) == BST_CHECKED) { - account_set_strattr(accountgui, "BNET\\auth\\announce", "true"); - messageq = TRUE; - } + std::strcpy(temp, addr_num_to_addr_str(conn_get_addr(conngui), 0)); - if (SendMessage(hButton, BM_GETCHECK, 0, 0) == BST_CHECKED) { - unsigned int i_GUI; + for (i_GUI = 0; temp[i_GUI] != ':'; i_GUI++) + ipadr[i_GUI] = temp[i_GUI]; - strcpy(temp, addr_num_to_addr_str(conn_get_addr(conngui), 0)); + ipadr[i_GUI] = 0; - for (i_GUI = 0; temp[i_GUI] != ':'; i_GUI++) - ipadr[i_GUI] = temp[i_GUI]; + std::strcpy(temp, " a "); + std::strcat(temp, ipadr); + handle_ipban_command(NULL, temp); - ipadr[i_GUI] = 0; + temp[0] = 0; + std::strcpy(temp, " has been added to IpBanList"); + std::strcat(ipadr, temp); + if (messageq == TRUE) + { + std::strcat(ipadr, " and UserStatus changed"); + MessageBox(hwnd, ipadr, "ipBan & StatusChange", MB_OK); + messageq = FALSE; + kickq = FALSE; + } + else + MessageBox(hwnd, ipadr, "ipBan", MB_OK); + } - strcpy(temp, " a "); - strcat(temp, ipadr); - handle_ipban_command(NULL, temp); + if (SendMessage(hButton1, BM_GETCHECK, 0, 0) == BST_CHECKED) + { + conn_set_state(conngui, conn_state_destroy); + kickq = TRUE; + } - temp[0] = 0; - strcpy(temp, " has been added to IpBanList"); - strcat(ipadr, temp); - if (messageq == TRUE) { - strcat(ipadr, " and UserStatus changed"); - MessageBox(hwnd, ipadr, "ipBan & StatusChange", MB_OK); - messageq = FALSE; - kickq = FALSE; - } - else - MessageBox(hwnd, ipadr, "ipBan", MB_OK); - } + if ((messageq == TRUE) && (kickq == TRUE)) + { + std::strcat(selected_item, "has been kicked and Status has changed"); + MessageBox(hwnd, selected_item, "UserKick & StatusChange", MB_OK); + } - if (SendMessage(hButton1, BM_GETCHECK, 0, 0) == BST_CHECKED) { - conn_set_state(conngui, conn_state_destroy); - kickq = TRUE; - } + if ((kickq == TRUE) && (messageq == FALSE)) + { + std::strcat(selected_item, " has been kicked from the server"); + MessageBox(hwnd, selected_item, "UserKick", MB_OK); + } - if ((messageq == TRUE) && (kickq == TRUE)) { - strcat(selected_item, "has been kicked and Status has changed"); - MessageBox(hwnd, selected_item, "UserKick & StatusChange", MB_OK); - } + if ((kickq == FALSE) && (messageq == TRUE)) + { + std::strcat(selected_item, "'s Status has been changed"); + MessageBox(hwnd, selected_item, "StatusChange", MB_OK); + } - if ((kickq == TRUE) && (messageq == FALSE)) { - strcat(selected_item, " has been kicked from the server"); - MessageBox(hwnd, selected_item, "UserKick", MB_OK); - } - - if ((kickq == FALSE) && (messageq == TRUE)) { - strcat(selected_item, "'s Status has been changed"); - MessageBox(hwnd, selected_item, "StatusChange", MB_OK); - } - - selected_item[0] = 0; - } - break; + selected_item[0] = 0; + } + break; } } break; @@ -890,11 +924,13 @@ int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE reserved, LPSTR lpCmdLine, i #endif Console console; - if (cmdline_load(__argc, __argv) != 1) { + if (cmdline_load(__argc, __argv) != 1) + { return -1; } - if (cmdline_get_console()){ + if (cmdline_get_console()) + { console.RedirectIOToConsole(); return app_main(__argc, __argv); }