diff -rc irc2.5.1.bu.09/doc/bu.changes irc2.5.1.bu.09a/doc/bu.changes *** irc2.5.1.bu.09/doc/bu.changes Thu Nov 8 22:32:56 1990 --- irc2.5.1.bu.09a/doc/bu.changes Mon Nov 12 20:40:20 1990 *************** *** 1,3 **** --- 1,8 ---- + Changes in irc2.5.1.bu.09a (from irc2.5.1.bu.09): + + * Fixed a small problem with certain combinations of MODE parameters. + (Not nearly as bad as the original nasty problem, though.) + Changes in irc2.5.1.bu.09 (from irc2.5.1.bu.08): * NOTICE to a moderated or no-messages-to-channel channel now diff -rc irc2.5.1.bu.09/include/patchlevel.h irc2.5.1.bu.09a/include/patchlevel.h *** irc2.5.1.bu.09/include/patchlevel.h Mon Nov 5 21:20:55 1990 --- irc2.5.1.bu.09a/include/patchlevel.h Mon Nov 12 20:45:16 1990 *************** *** 18,21 **** */ /* $Header: patchlevel.h,v 2.4 90/05/02 00:24:15 casie Exp $ */ ! #define PATCHLEVEL "2.5.1.bu.09" --- 18,21 ---- */ /* $Header: patchlevel.h,v 2.4 90/05/02 00:24:15 casie Exp $ */ ! #define PATCHLEVEL "2.5.1.bu.09a" diff -rc irc2.5.1.bu.09/ircd/channel.c irc2.5.1.bu.09a/ircd/channel.c *** irc2.5.1.bu.09/ircd/channel.c Sat Nov 3 00:35:29 1990 --- irc2.5.1.bu.09a/ircd/channel.c Mon Nov 12 20:38:52 1990 *************** *** 331,337 **** nusers = atoi(parv[0]); if (nusers > 0) { limitflag = LIMIT_SET; - sprintf(&(parabuf[strlen(parabuf)]), "%d ", nusers); limit = nusers; } break; --- 331,336 ---- *************** *** 357,403 **** } mode->mode |= maddflags; mode->mode &= ~mdelflags; ! modebuf[i++] = '+'; ! if (maddflags & MODE_PRIVATE) ! modebuf[i++] = 'p'; ! if (maddflags & MODE_SECRET) ! modebuf[i++] = 's'; ! if (maddflags & MODE_ANONYMOUS) ! modebuf[i++] = 'a'; ! if (maddflags & MODE_MODERATED) ! modebuf[i++] = 'm'; ! if (maddflags & MODE_TOPICLIMIT) ! modebuf[i++] = 't'; ! if (maddflags & MODE_INVITEONLY) ! modebuf[i++] = 'i'; ! if (maddflags & MODE_NOPRIVMSGS) ! modebuf[i++] = 'n'; ! modebuf[i++] = '-'; ! if (mdelflags & MODE_PRIVATE) ! modebuf[i++] = 'p'; ! if (mdelflags & MODE_SECRET) ! modebuf[i++] = 's'; ! if (mdelflags & MODE_ANONYMOUS) ! modebuf[i++] = 'a'; ! if (mdelflags & MODE_MODERATED) ! modebuf[i++] = 'm'; ! if (mdelflags & MODE_TOPICLIMIT) ! modebuf[i++] = 't'; ! if (mdelflags & MODE_INVITEONLY) ! modebuf[i++] = 'i'; ! if (mdelflags & MODE_NOPRIVMSGS) ! modebuf[i++] = 'n'; if (limitflag && limit >= 0) { if (limit > 0) { modebuf[i++] = '+'; } else if (limit == 0) { modebuf[i++] = '-'; } ! modebuf[i++] = 'l'; mode->limit = limit; } modebuf[i] = '\0'; --- 356,409 ---- } mode->mode |= maddflags; mode->mode &= ~mdelflags; ! if (maddflags || !(mdelflags || (i > 0))) ! { ! modebuf[i++] = '+'; ! if (maddflags & MODE_PRIVATE) ! modebuf[i++] = 'p'; ! if (maddflags & MODE_SECRET) ! modebuf[i++] = 's'; ! if (maddflags & MODE_ANONYMOUS) ! modebuf[i++] = 'a'; ! if (maddflags & MODE_MODERATED) ! modebuf[i++] = 'm'; ! if (maddflags & MODE_TOPICLIMIT) ! modebuf[i++] = 't'; ! if (maddflags & MODE_INVITEONLY) ! modebuf[i++] = 'i'; ! if (maddflags & MODE_NOPRIVMSGS) ! modebuf[i++] = 'n'; ! } ! if (mdelflags) ! { ! modebuf[i++] = '-'; ! if (mdelflags & MODE_PRIVATE) ! modebuf[i++] = 'p'; ! if (mdelflags & MODE_SECRET) ! modebuf[i++] = 's'; ! if (mdelflags & MODE_ANONYMOUS) ! modebuf[i++] = 'a'; ! if (mdelflags & MODE_MODERATED) ! modebuf[i++] = 'm'; ! if (mdelflags & MODE_TOPICLIMIT) ! modebuf[i++] = 't'; ! if (mdelflags & MODE_INVITEONLY) ! modebuf[i++] = 'i'; ! if (mdelflags & MODE_NOPRIVMSGS) ! modebuf[i++] = 'n'; ! } if (limitflag && limit >= 0) { if (limit > 0) { modebuf[i++] = '+'; + sprintf(&(parabuf[strlen(parabuf)]), "%d ", limit); } else if (limit == 0) { modebuf[i++] = '-'; } ! modebuf[i++] = 'l'; mode->limit = limit; } modebuf[i] = '\0';