diff --git a/includes/ft_irc.hpp b/includes/ft_irc.hpp index 26dfa1e..7a66959 100644 --- a/includes/ft_irc.hpp +++ b/includes/ft_irc.hpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/01 17:27:37 by apommier #+# #+# */ -/* Updated: 2023/03/09 01:11:57 by apommier ### ########.fr */ +/* Updated: 2023/03/09 03:07:21 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -142,7 +142,7 @@ struct channelData //each chan have one std::string password; int maxUser; //int banMask ??? - + int nbrUser; }; @@ -241,7 +241,8 @@ void parse_commands(std::string buffer, fdList &allFds, int userNbr); /* ******************************MODE UTILS********************************** */ /* ************************************************************************** */ -std::string chan_reply(channelData &chan, clientData &user); -std::string user_reply(clientData &user); -int search_and_erase(std::string &str, std::string toFind); -bool str_to_int(int &i, const std::string s); +void ban_reply(channelData &chan, clientData &user); +void chan_reply(channelData &chan, clientData &user); +void user_reply(clientData &user); +int search_and_erase(std::string &str, std::string toFind); +bool str_to_int(int &i, const std::string s); diff --git a/srcs/commands/channel/part.cpp b/srcs/commands/channel/part.cpp index d9037b3..95b5028 100644 --- a/srcs/commands/channel/part.cpp +++ b/srcs/commands/channel/part.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/19 22:10:07 by apommier #+# #+# */ -/* Updated: 2023/03/09 01:48:54 by apommier ### ########.fr */ +/* Updated: 2023/03/09 03:11:17 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,7 @@ void leave_chan(fdList &allFds, std::string chan, int userNbr, std::string msg) //del_user_in_chan(&allFds.userData[userNbr], &allFds.channelList[chanPos]); int pos = find_client_list(allFds.channelList[chanPos].userList, &allFds.userData[userNbr]); allFds.channelList[chanPos].userList.erase(allFds.channelList[chanPos].userList.begin() + pos); + allFds.channelList[chanPos].nbrUser--; del_chan_in_user(&allFds.userData[userNbr], &allFds.channelList[chanPos]); //:WiZ!jto@tolsun.oulu.fi PART #playzone :I lost //:awd!kinou@kinou PART #test @@ -51,6 +52,7 @@ void leave_chan(fdList &allFds, std::string chan, int userNbr, std::string msg) // reply += "\n"; std::cout << "leave msg=" << reply << std::endl; send(allFds.userData[userNbr].fd, reply.c_str(), reply.size(), 0); + //allFds.channelList[chanPos].nbrUser--; for (int i = 0; i < allFds.channelList[chanPos].nbrUser; i++) { if (allFds.channelList[chanPos].userList[i]->mode.s) diff --git a/srcs/commands/channel_op/utils_mode.cpp b/srcs/commands/channel_op/utils_mode.cpp index ccf82cb..b599e67 100644 --- a/srcs/commands/channel_op/utils_mode.cpp +++ b/srcs/commands/channel_op/utils_mode.cpp @@ -6,15 +6,27 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/03/09 00:13:32 by apommier #+# #+# */ -/* Updated: 2023/03/09 01:47:02 by apommier ### ########.fr */ +/* Updated: 2023/03/09 02:30:14 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../../includes/ft_irc.hpp" -// std::string ban_reply +void ban_reply(channelData &chan, clientData &user) +{ + std::string endReply; + std::string fullReply; + std::string reply = ":irc.local 367 " + user.nickname + " " + chan.name + " "; + for (size_t i = 0; i < chan.banList.size(); i++) + { + fullReply = reply + chan.banList[i]->nickname + "!" + chan.banList[i]->userName + "@" + chan.banList[i]->hostName + "\n"; + send(user.fd, fullReply.c_str(), fullReply.size(), 0); + } + endReply = ":irc.local 367 " + user.nickname + " " + chan.name + " :End of channel ban list\n"; + send(user.fd, endReply.c_str(), endReply.size(), 0); +} -std::string chan_reply(channelData &chan, clientData &user) +void chan_reply(channelData &chan, clientData &user) { //:irc.server.com 324 ClientName #channel +tnkLs 10 operator1 operator2 (void) chan; @@ -41,12 +53,13 @@ std::string chan_reply(channelData &chan, clientData &user) reply += chan.maxUser; for (size_t i = 0; i < chan.opList.size(); i++) reply += " " + chan.opList[i]->nickname; + send(user.fd, reply.c_str(), reply.size(), 0); //if (reply.size() > 2) // reply_begin += reply; - return (reply); + //return (reply); } -std::string user_reply(clientData &user) +void user_reply(clientData &user) { //:irc.server.com 221 ClientName +ix @@ -61,7 +74,7 @@ std::string user_reply(clientData &user) reply += 'w'; if (user.mode.o) reply += 'o'; - return (reply); + send(user.fd, reply.c_str(), reply.size(), 0); } int search_and_erase(std::string &str, std::string toFind) diff --git a/srcs/delete_user.cpp b/srcs/delete_user.cpp index d1c8902..ab3ee52 100644 --- a/srcs/delete_user.cpp +++ b/srcs/delete_user.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/12 20:38:50 by apommier #+# #+# */ -/* Updated: 2023/03/09 02:10:41 by apommier ### ########.fr */ +/* Updated: 2023/03/09 02:17:28 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -53,7 +53,7 @@ void delete_user(fdList &allFds, int userNbr) for (size_t i = 0; i < allFds.channelList.size(); i++)//all joined chan { - del_user_in_chan(&allFds.userData[userNbr], allFds.channelList[i]); + del_user_in_chan(&allFds.userData[userNbr], &allFds.channelList[i]); //allFds.userData[userNbr].joinedChan[i].erase(find_user_in_chan(allFds.userData[userNbr].joinedChan[i])/*find user in chan*/) } close(allFds.userData[userNbr].fd);