]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Added quit reason on module unload support.
authorsplidge <redacted>
Tue, 25 Mar 2008 01:10:58 +0000 (01:10 +0000)
committersplidge <redacted>
Tue, 25 Mar 2008 01:10:58 +0000 (01:10 +0000)
chanserv/chanserv.c
chanserv/chanserv.h
chanserv/chanservstdcmds.c

index 7c1cceddb4049ec287c69d8185ea71a08a2bc9cf..a4d05fba7e06588f7113d46ddf63b5912d15c64b 100644 (file)
@@ -16,6 +16,7 @@ int chanservnext;
 int chanserv_init_status;
 
 sstring **chantypes;
+sstring *cs_quitreason;
 
 const flag rcflags[] = {
   { 'a', QCFLAG_AUTOOP },
@@ -115,6 +116,7 @@ void _init() {
     chanservcommandinit();
     chanservaddcommand("showcommands", 0, 1, cs_doshowcommands, "Lists available commands.","Usage: SHOWCOMMANDS [<mask>]\nPrints a list of commands currently available to you, where:\nmask - Mask of commands to list (* or ? are wildcards).  If no mask is specified,\n       all available commands are displayed.");
     chanservaddcommand("quit", QCMD_DEV, 1, cs_doquit, "Makes the bot QUIT and \"reconnect\".","");
+    chanservaddcommand("setquitreason", QCMD_DEV, 1, cs_doquit, "Sets the reason to be sent when quitting due to an unload.","");
     chanservaddcommand("rename", QCMD_DEV, 1, cs_dorename, "Changes the bot's name.","");
     chanservaddcommand("rehash", QCMD_DEV, 0, cs_dorehash, "Reloads all text from database.","");
     /* Make "HELP" take 2 arguments so things like "HELP chanflags #channel" work.  Any junk after the command will go into arg 2 and be ignored. */
@@ -201,7 +203,9 @@ void _fini() {
   }
 
   if (chanservnick)
-    deregisterlocaluser(chanservnick, "Leaving");
+    deregisterlocaluser(chanservnick, cs_quitreason?cs_quitreason->content:"Leaving");
+
+  freesstring(cs_quitreason);
 
   deregisterhook(HOOK_NICK_NEWNICK, cs_handlenick);
   deregisterhook(HOOK_NICK_ACCOUNT, cs_handlenick);
index cd9c08fae5e973352bc35ae1e86aece6bf755a6d..9aed1a6a604d287aba37c7ef720e20856f063642 100644 (file)
@@ -678,6 +678,8 @@ extern sstring **chantypes;
 
 extern maillock *maillocks;
 
+extern sstring *cs_quitreason;
+
 /* Function prototypes */
 
 /* chanserv.c */
@@ -813,6 +815,7 @@ void cs_logchanop(regchan *rcp, char *nick, reguser *rup);
 int cs_doshowcommands(void *source, int cargc, char **cargv);
 int cs_dohelp(void *source, int cargc, char **cargv);
 int cs_doquit(void *source, int cargc, char **cargv);
+int cs_dosetquitreason(void *source, int cargc, char **cargv);
 int cs_dorename(void *source, int cargc, char **cargv);
 int cs_dorehash(void *source, int cargc, char **cargv);
 int cs_doversion(void *source, int cargc, char **cargv);
index bb3bb6cd7db79c63b49a14858496bf8c1d7632e6..bc1a1b97667b050e3590af83c5368fefa040ea32 100644 (file)
@@ -45,6 +45,24 @@ int cs_doquit(void *source, int cargc, char **cargv) {
   return CMD_OK;
 }
 
+int cs_dosetquitreason(void *source, int cargc, char **cargv) {
+  nick *sender=(nick *)source;
+
+  if (cargc<0) {
+    chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "setquitreason");
+    return CMD_ERROR;
+  }
+  
+  if (cs_quitreason)
+    freesstring(cs_quitreason);
+  cs_quitreason=getsstring(cargv[0]);
+
+  chanservstdmessage(sender, QM_DONE);
+
+  return CMD_OK;
+}
+
 int cs_dorename(void *source, int cargc, char **cargv) {
   char newnick[NICKLEN+1];
   nick *sender=source;