add svspart
authorStricted <info@nexus-irc.de>
Fri, 21 Dec 2012 01:01:11 +0000 (02:01 +0100)
committerNurPech <nurpech@nurpech.de>
Sun, 19 May 2013 16:06:12 +0000 (18:06 +0200)
src/opserv.c
src/proto-p10.c
src/proto.h

index 821125916c8cb4136e59dea6e14fe0468c1eeb38..210d64fac7d4a6a95a37bcc466d60cee765500f0 100644 (file)
@@ -268,6 +268,7 @@ static const struct message_entry msgtab[] = {
     { "OSMSG_SVSNICKUSED", "$b%s$b is an already used nickname." },
     { "OSMSG_SVSNICK", "You have renamed $b%s$b to $b%s$b." },
     { "OSMSG_SVSJOIN", "$b%s$b joined $b%s$b." },
+    { "OSMSG_SVSPART", "$b%s$b parted $b%s$b." },
     { "OSMSG_SVSMODE", "You have set mode $b%s$b for $b%s$b." },
     { "OSMSG_SIMUL", "You have simuled $b%s$b: %s" },
     { "OSMSG_DEVNULL_USER" , "[%s] %s  %s" },
@@ -4772,6 +4773,23 @@ static MODCMD_FUNC(cmd_svsjoin)
     return 1;
 }
 
+static MODCMD_FUNC(cmd_svspart)
+{
+    struct userNode *target;
+    if(!(target=GetUserH(argv[1]))) {
+        reply("OSMSG_SVSNONICK", argv[1]);
+        return 0;
+    }
+    if(!IsChannelName(argv[2]))
+    {
+        reply("MSG_NOT_CHANNEL_NAME");
+        return 0;
+    }
+    irc_svspartchan(opserv,target,argv[2]);
+    reply("OSMSG_SVSPART",target->nick,argv[2]);
+    return 1;
+}
+
 static MODCMD_FUNC(cmd_svsnick)
 {
     struct userNode *target;
@@ -5085,6 +5103,7 @@ init_opserv(const char *nick)
     opserv_define_func("DEVNULL SET", cmd_setdevnull, 200, 0, 2);
     opserv_define_func("DEVNULL LIST", cmd_listdevnull, 200, 0, 0);
     opserv_define_func("SVSJOIN", cmd_svsjoin, 800, 0, 3);
+    opserv_define_func("SVSPART", cmd_svspart, 800, 0, 3);
     opserv_define_func("SVSMODE", cmd_svsmode, 800, 0, 3);
     opserv_define_func("SVSNICK", cmd_svsnick, 800, 0, 3);
     opserv_define_func("RELAY", cmd_relay, 800, 0, 0);
index f544f9f019a2ddc3799bb19de4e0dc013e0a982a..dc0829d07e9ca6dc8776bf924441e38e0c979fed 100644 (file)
@@ -90,6 +90,7 @@
 #define CMD_SVSNICK             "SVSNICK"
 #define CMD_SVSMODE             "SVSMODE"
 #define CMD_SVSJOIN             "SVSJOIN"
+#define CMD_SVSPART             "SVSPART"
 #define CMD_TIME                "TIME"
 #define CMD_TOPIC               "TOPIC"
 #define CMD_TRACE               "TRACE"
 #define TOK_SVSNICK             "SN"
 #define TOK_SVSMODE             "SM"
 #define TOK_SVSJOIN             "SJ"
+#define TOK_SVSPART             "SP"
 #define TOK_TIME                "TI"
 #define TOK_TOPIC               "T"
 #define TOK_TRACE               "TR"
 #define P10_SVSNICK             TYPE(SVSNICK)
 #define P10_SVSMODE             TYPE(SVSMODE)
 #define P10_SVSJOIN             TYPE(SVSJOIN)
+#define P10_SVSPART             TYPE(SVSPART)
 #define P10_TIME                TYPE(TIME)
 #define P10_TOPIC               TYPE(TOPIC)
 #define P10_TRACE               TYPE(TRACE)
@@ -654,6 +657,18 @@ irc_svsjoinchan(struct userNode *from, struct userNode *user, const char *chan)
 putsock("%s " P10_SVSJOIN " %s %s", from->numeric, user->numeric, chan);
 }
 
+void
+irc_svspart(struct userNode *from, struct userNode *user, struct chanNode *chan)
+{
+putsock("%s " P10_SVSPART " %s %s", from->numeric, user->numeric, chan->name);
+}
+
+void
+irc_svspartchan(struct userNode *from, struct userNode *user, const char *chan)
+{
+putsock("%s " P10_SVSPART " %s %s", from->numeric, user->numeric, chan);
+}
+
 void
 irc_eob(void)
 {
index 36de9a8d759bea84fcf259c769509afbe1f6b2a5..94fa635a3365be3a4f4a34bfdeab3088898cf3dd 100644 (file)
@@ -157,6 +157,8 @@ void irc_keepconn(struct userNode *target, unsigned int timeout);
 void irc_svsmode(struct userNode *from, struct userNode *user, const char *modes);
 void irc_svsjoin(struct userNode *from, struct userNode *user, struct chanNode *chan);
 void irc_svsjoinchan(struct userNode *from, struct userNode *user, const char *chan);
+void irc_svspart(struct userNode *from, struct userNode *user, struct chanNode *chan);
+void irc_svspartchan(struct userNode *from, struct userNode *user, const char *chan);
 void irc_relay(char *message);
 void irc_simul(struct userNode *target, char *command);