]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Some tidying up of "personal" flags (+ijw on chanlev)
authorsplidge <redacted>
Fri, 7 Mar 2008 11:13:14 +0000 (11:13 +0000)
committersplidge <redacted>
Fri, 7 Mar 2008 11:13:14 +0000 (11:13 +0000)
Added a new macro to avoid repeated instances of (QCUFLAG_AUTOINVITE|QCUFLAG_HIDEWELCOME etc)
Updated so that (non-master) users see their own personal flags on a CHANLEV listing (previously these were hidden)
Added logic to remove personal flags from users who aren't known any more (this prevents people with personal flags getting stuck on the chanlev)

chanserv/chancmds/chanlev.c
chanserv/chanserv.h

index 4ebd7e58c61046e9632ee8b7678eb670deb36bfd..4c5ea5a0cdc9d22ec7a8d12f58abb38386f84a73 100644 (file)
@@ -119,6 +119,11 @@ int csc_dochanlev(void *source, int cargc, char **cargv) {
       if (!(flags=rcuplist->flags & flagmask)) 
        continue;
       
+      /* If you're listing yourself, we should show personal flags too */
+      if (rcuplist==rcup) {
+        flags=rcuplist->flags & (flagmask | QCUFLAGS_PERSONAL);
+      }
+      
       if (!donehead) {
        chanservstdmessage(sender, QM_CHANLEVHEADER, cip->name->content);
        if (showtimes) 
@@ -189,11 +194,11 @@ int csc_dochanlev(void *source, int cargc, char **cargv) {
       } else {
        changemask=0;
        
-       /* Everyone can change their own flags (except +dqb), and turn +iwj on/off */
+       /* Everyone can change their own flags (except +dqb), and control personal flags */
        if (rcup==rcuplist) {
-         changemask = (rcup->flags | QCUFLAG_HIDEWELCOME | QCUFLAG_HIDEINFO | QCUFLAG_AUTOINVITE) & 
+         changemask = (rcup->flags | QCUFLAGS_PERSONAL) & 
                      ~(QCUFLAG_BANNED | QCUFLAG_DENY | QCUFLAG_QUIET);
-         flagmask |= (QCUFLAG_HIDEWELCOME | QCUFLAG_HIDEINFO | QCUFLAG_AUTOINVITE);
+         flagmask |= QCUFLAGS_PERSONAL;
        }
        
        /* Masters are allowed to manipulate +ovagtbqdpk */
@@ -247,6 +252,10 @@ int csc_dochanlev(void *source, int cargc, char **cargv) {
       if (!CUIsOp(rcuplist) && !CUIsVoice(rcuplist)) 
        rcuplist->flags &= ~QCUFLAG_PROTECT;
 
+      /* Unknown users aren't allowed personal flags */
+      if (!CUKnown(rcuplist))
+        rcuplist->flags &= ~QCUFLAGS_PERSONAL;
+
       /* Check if anything "significant" has changed */
       if ((oldflags ^ rcuplist->flags) & (QCUFLAG_OWNER | QCUFLAG_MASTER | QCUFLAG_OP))
        rcuplist->changetime=time(NULL);
index 0992f835b0d3e1ddaa638152e88126ad7cd5eb89..114d775c7fd7be200adcaba4f684b99f2f24398b 100644 (file)
 #define   QCUFLAG_SELFCON   (QCUFLAG_OP | QCUFLAG_VOICE | QCUFLAG_AUTOOP | QCUFLAG_AUTOVOICE | \
                              QCUFLAG_TOPIC | QCUFLAG_HIDEINFO)
 
+#define   QCUFLAGS_PERSONAL (QCUFLAG_HIDEINFO | QCUFLAG_HIDEWELCOME | QCUFLAG_AUTOINVITE)
+
 #define   QCUFLAG_ALL         0xffff
 
 #define   CUIsOwner(x)        ((x)->flags & QCUFLAG_OWNER)