*** channel.c.old Thu Apr 17 19:58:15 1997 --- channel.c Tue Apr 22 02:10:43 1997 *************** *** 750,755 **** --- 750,766 ---- time_t newtime = (time_t)0; aConfItem *aconf; + /* + ** Si somos IRCOPs y hemos puesto el flag X, podemos + ** fijar parámetros pase lo que pase. + ** jcea@argo.es - 26/03/97 + */ + + int OPER_JCEA=0; + + /* + */ + *mbuf=*pbuf=*bmbuf=*bpbuf='\0'; *badop=0; if (parc < 1) *************** *** 774,779 **** --- 785,805 ---- { switch (*curr) { + /* + ** Si somos IRCOPs y hemos puesto el flag X, podemos + ** fijar parámetros pase lo que pase. + ** jcea@argo.es - 26/03/97 + */ + case 'x': + if(IsOper(sptr)) { + OPER_JCEA=!0; + if(chptr->creationtime) /* Timestamp */ + chptr->creationtime/*--*/; + } + break; + /* + */ + case '+': whatt = MODE_ADD; break; *************** *** 811,816 **** --- 837,843 ---- !find_conf_host(cptr->confs, sptr->name, CONF_UWORLD))) break; + if (!(member = find_user_link(chptr->members,who))) { sendto_one(cptr, err_str(ERR_USERNOTINCHANNEL), *************** *** 1050,1061 **** --- 1077,1099 ---- } } /* end of while loop for MODE processing */ + /* + ** Si somos IRCOPs y hemos puesto el flag X, podemos + ** fijar parámetros pase lo que pase. + ** jcea@argo.es - 26/03/97 + */ + + if(!OPER_JCEA) { /* Now reject non chan ops */ if (!IsServer(cptr) && (!tmp || !(tmp->flags & CHFL_CHANOP))) { *badop = 0; return (opcnt || new != mode->mode || limitset || keychange) ? 0 : -1; } + } + + /* + */ if (doesop && newtime==0 && IsServer(sptr)) *badop=2; *************** *** 1065,1070 **** --- 1103,1119 ---- bounce = (*badop==1 || *badop==2 || is_deopped(sptr, chptr))?1:0; + /* + ** Si somos IRCOPs y hemos puesto el flag X, podemos + ** fijar parámetros pase lo que pase. + ** jcea@argo.es - 26/03/97 + */ + + if(OPER_JCEA) bounce=0; + + /* + */ + whatt = 0; for (ip = flags; *ip; ip += 2) if ((*ip & new) && !(*ip & oldm.mode)) *************** *** 1345,1358 **** *mbuf++ = '\0'; *bmbuf++ = '\0'; /* Bounce here */ if (!hacknotice && *bmodebuf && chptr->creationtime) sendto_one(cptr,":%s MODE %s %s %s %lu", me.name, chptr->chname, bmodebuf, bparambuf, ! *badop==2?(time_t)0:chptr->creationtime); return gotts?1:-1; } /* We are now treating the part of /join as a key ** ring; that is, we try one key against the actual channel key, and if that --- 1394,1414 ---- *mbuf++ = '\0'; *bmbuf++ = '\0'; + /* Bounce here */ + if (!hacknotice && *bmodebuf && chptr->creationtime) sendto_one(cptr,":%s MODE %s %s %s %lu", me.name, chptr->chname, bmodebuf, bparambuf, ! chptr->creationtime); ! /* *badop==2?(time_t)0:chptr->creationtime); ! */ return gotts?1:-1; + + } + /* We are now treating the part of /join as a key ** ring; that is, we try one key against the actual channel key, and if that