/[svn]/ircd-hybrid/trunk/src/channel_mode.c
ViewVC logotype

Diff of /ircd-hybrid/trunk/src/channel_mode.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 8159 by michael, Sat Apr 1 20:06:37 2017 UTC revision 8160 by michael, Sun Apr 9 10:24:39 2017 UTC
# Line 473  chm_ban(struct Client *source_p, struct Line 473  chm_ban(struct Client *source_p, struct
473    if (*mask == ':' || (!MyConnect(source_p) && strchr(mask, ' ')))    if (*mask == ':' || (!MyConnect(source_p) && strchr(mask, ' ')))
474      return;      return;
475    
476    switch (dir)    if (dir == MODE_ADD)  /* setting + */
477    {    {
478      case MODE_ADD:      if (!add_id(source_p, chptr, mask, CHFL_BAN))
479        if (!add_id(source_p, chptr, mask, CHFL_BAN))        return;
480          return;    }
481        break;    else if (dir == MODE_DEL)  /* setting - */
482      case MODE_DEL:    {
483        if (!del_id(chptr, mask, CHFL_BAN))      if (!del_id(chptr, mask, CHFL_BAN))
484          return;        return;
       break;  
     default:  
       assert(0);  
485    }    }
486    
487    mode_changes[mode_count].letter = mode->letter;    mode_changes[mode_count].letter = mode->letter;
# Line 545  chm_except(struct Client *source_p, stru Line 542  chm_except(struct Client *source_p, stru
542    if (*mask == ':' || (!MyConnect(source_p) && strchr(mask, ' ')))    if (*mask == ':' || (!MyConnect(source_p) && strchr(mask, ' ')))
543      return;      return;
544    
545    switch (dir)    if (dir == MODE_ADD)  /* setting + */
546    {    {
547      case MODE_ADD:      if (!add_id(source_p, chptr, mask, CHFL_EXCEPTION))
548        if (!add_id(source_p, chptr, mask, CHFL_EXCEPTION))        return;
549          return;    }
550        break;    else if (dir == MODE_DEL)  /* setting - */
551      case MODE_DEL:    {
552        if (!del_id(chptr, mask, CHFL_EXCEPTION))      if (!del_id(chptr, mask, CHFL_EXCEPTION))
553          return;        return;
       break;  
     default:  
       assert(0);  
554    }    }
555    
556    mode_changes[mode_count].letter = mode->letter;    mode_changes[mode_count].letter = mode->letter;
# Line 617  chm_invex(struct Client *source_p, struc Line 611  chm_invex(struct Client *source_p, struc
611    if (*mask == ':' || (!MyConnect(source_p) && strchr(mask, ' ')))    if (*mask == ':' || (!MyConnect(source_p) && strchr(mask, ' ')))
612      return;      return;
613    
614    switch (dir)    if (dir == MODE_ADD)  /* setting + */
615    {    {
616      case MODE_ADD:      if (!add_id(source_p, chptr, mask, CHFL_INVEX))
617        if (!add_id(source_p, chptr, mask, CHFL_INVEX))        return;
618          return;    }
619        break;    else if (dir == MODE_DEL)  /* setting - */
620      case MODE_DEL:    {
621        if (!del_id(chptr, mask, CHFL_INVEX))      if (!del_id(chptr, mask, CHFL_INVEX))
622          return;        return;
       break;  
     default:  
       assert(0);  
623    }    }
624    
625    mode_changes[mode_count].letter = mode->letter;    mode_changes[mode_count].letter = mode->letter;
# Line 677  chm_voice(struct Client *source_p, struc Line 668  chm_voice(struct Client *source_p, struc
668    if (MyClient(source_p) && (++mode_limit > MAXMODEPARAMS))    if (MyClient(source_p) && (++mode_limit > MAXMODEPARAMS))
669      return;      return;
670    
671    switch (dir)    if (dir == MODE_ADD)  /* setting + */
672    {    {
673      case MODE_ADD:      if (has_member_flags(member, CHFL_VOICE))
674        if (has_member_flags(member, CHFL_VOICE))        return;  /* No redundant mode changes */
         return;  /* No redundant mode changes */  
   
       AddMemberFlag(member, CHFL_VOICE);  
       break;  
     case MODE_DEL:  
       if (!has_member_flags(member, CHFL_VOICE))  
         return;  /* No redundant mode changes */  
675    
676        DelMemberFlag(member, CHFL_VOICE);      AddMemberFlag(member, CHFL_VOICE);
677        break;    }
678      else if (dir == MODE_DEL)  /* setting - */
679      {
680        if (!has_member_flags(member, CHFL_VOICE))
681          return;  /* No redundant mode changes */
682    
683        DelMemberFlag(member, CHFL_VOICE);
684    }    }
685    
686    mode_changes[mode_count].letter = mode->letter;    mode_changes[mode_count].letter = mode->letter;
# Line 736  chm_hop(struct Client *source_p, struct Line 726  chm_hop(struct Client *source_p, struct
726    if (MyClient(source_p) && (++mode_limit > MAXMODEPARAMS))    if (MyClient(source_p) && (++mode_limit > MAXMODEPARAMS))
727      return;      return;
728    
729    switch (dir)    if (dir == MODE_ADD)  /* setting + */
730      {
731        if (has_member_flags(member, CHFL_HALFOP))
732          return;  /* No redundant mode changes */
733    
734        AddMemberFlag(member, CHFL_HALFOP);
735      }
736      else if (dir == MODE_DEL)  /* setting - */
737    {    {
738      case MODE_ADD:      if (!has_member_flags(member, CHFL_HALFOP))
739        if (has_member_flags(member, CHFL_HALFOP))        return;  /* No redundant mode changes */
         return;  /* No redundant mode changes */  
   
       AddMemberFlag(member, CHFL_HALFOP);  
       break;  
     case MODE_DEL:  
       if (!has_member_flags(member, CHFL_HALFOP))  
         return;  /* No redundant mode changes */  
740    
741        DelMemberFlag(member, CHFL_HALFOP);      DelMemberFlag(member, CHFL_HALFOP);
       break;  
742    }    }
743    
744    mode_changes[mode_count].letter = mode->letter;    mode_changes[mode_count].letter = mode->letter;
# Line 795  chm_op(struct Client *source_p, struct C Line 784  chm_op(struct Client *source_p, struct C
784    if (MyClient(source_p) && (++mode_limit > MAXMODEPARAMS))    if (MyClient(source_p) && (++mode_limit > MAXMODEPARAMS))
785      return;      return;
786    
787    switch (dir)    if (dir == MODE_ADD)  /* setting + */
788      {
789        if (has_member_flags(member, CHFL_CHANOP))
790          return;  /* No redundant mode changes */
791    
792        AddMemberFlag(member, CHFL_CHANOP);
793      }
794      else if (dir == MODE_DEL)  /* setting - */
795    {    {
796      case MODE_ADD:      if (!has_member_flags(member, CHFL_CHANOP))
797        if (has_member_flags(member, CHFL_CHANOP))        return;  /* No redundant mode changes */
         return;  /* No redundant mode changes */  
   
       AddMemberFlag(member, CHFL_CHANOP);  
       break;  
     case MODE_DEL:  
       if (!has_member_flags(member, CHFL_CHANOP))  
         return;  /* No redundant mode changes */  
798    
799        DelMemberFlag(member, CHFL_CHANOP);      DelMemberFlag(member, CHFL_CHANOP);
       break;  
800    }    }
801    
802    mode_changes[mode_count].letter = mode->letter;    mode_changes[mode_count].letter = mode->letter;

Legend:
Removed from v.8159  
changed lines
  Added in v.8160

svnadmin@ircd-hybrid.org
ViewVC Help
Powered by ViewVC 1.1.28