#include <stdio.h>
#include <assert.h>
#include <string.h>
+#include <stdint.h>
MODULE_VERSION("");
}
if (!(sender=getnickbynumericstr(source))) {
- Error("localuserchannel",ERR_WARNING,"Got invite from unknown numeric %s.",source);
+ Error("localuserchannel",ERR_WARNING,"Got invite from unknown numeric %s.",(char *)source);
return CMD_OK;
}
/* Check pointers are valid.. */
if (cp==NULL || np==NULL) {
- Error("localuserchannel",ERR_WARNING,"Trying to part NULL channel or NULL nick (cp=%x,np=%x)",cp,np);
+ Error("localuserchannel",ERR_WARNING,"Trying to part NULL channel or NULL nick (cp=%p,np=%p)",cp,np);
return 1;
}
return;
}
+ if (IsCloaked(target)) {
+ /* Target is cloaked, never set channel modes for cloaked users */
+ return;
+ }
+
if ((modes & MC_DEOP) && (*lp & CUMODE_OP)) {
(*lp) &= ~CUMODE_OP;
if (changes->changecount >= MAXMODEARGS)
void localsettopic(nick *np, channel *cp, char *topic) {
unsigned long *lp;
char source[10];
+ time_t now=getnettime();
if (np==NULL || (lp=getnumerichandlefromchanhash(cp->users,np->numeric))==NULL) {
/* User isn't on channel, hack mode */
}
cp->topic=getsstring(topic,TOPICLEN);
- cp->topictime=getnettime();
+
+ /* Update the topic time iff the old time was in the past. This
+ * means if we are bouncing a topic with a TS 1sec newer than ours
+ * we won't use an old timestamp */
+ if (cp->topictime < now) {
+ cp->topictime=now;
+ }
if (connected) {
- irc_send("%s T %s %u %u :%s",source,cp->index->name->content,cp->timestamp,cp->topictime,(cp->topic)?cp->topic->content:"");
+ irc_send("%s T %s %jd %jd :%s",source,cp->index->name->content,(intmax_t)cp->timestamp,(intmax_t)cp->topictime,(cp->topic)?cp->topic->content:"");
}
}
}
}
-void localinvite(nick *source, channel *cp, nick *target) {
+void localinvite(nick *source, chanindex *cip, nick *target) {
/* Servers can't send invites */
if (!source)
* argument */
if (connected) {
irc_send("%s I %s :%s",longtonumeric(source->numeric,5),
- target->nick, cp->index->name->content);
+ target->nick, cip->name->content);
}
}