commit - 678d5411e23b3361ef32617f520d051109de8eef
commit + de6f08cc040240fdec662f18fb51d95859c4ab5a
blob - 175f23b253562118c9dc7f19b9fc82c0535187c4
blob + edbbc38bee3412d0c336833f34393bebab5323c8
--- src/ngircd/channel.c
+++ src/ngircd/channel.c
assert(Chan != NULL);
return Chan->topic_who;
} /* Channel_TopicWho */
+
+GLOBAL unsigned int
+Channel_CreationTime(CHANNEL *Chan)
+{
+ assert(Chan != NULL);
+ return (unsigned int) Chan->creation_time;
+} /* Channel_CreationTime */
+
#endif
strlcpy( c->name, Name, sizeof( c->name ));
c->hash = Hash( c->name );
c->next = My_Channels;
+#ifndef STRICT_RFC
+ c->creation_time = time(NULL);
+#endif
My_Channels = c;
LogDebug("Created new channel structure for \"%s\".", Name);
return c;
blob - 46e7e13a8df2f233f1f5ab0cb2c2fc93ca99ed42
blob + 030f9109ceff0eb7bbfa42d435ead49740dc29da
--- src/ngircd/channel.h
+++ src/ngircd/channel.h
char modes[CHANNEL_MODE_LEN]; /* Channel modes */
array topic; /* Topic of the channel */
#ifndef STRICT_RFC
+ time_t creation_time; /* Channel creation time */
time_t topic_time; /* Time when topic was set */
char topic_who[CLIENT_NICK_LEN];/* Nickname of user that set topic */
#endif
#ifndef STRICT_RFC
GLOBAL unsigned int Channel_TopicTime PARAMS(( CHANNEL *Chan ));
GLOBAL char *Channel_TopicWho PARAMS(( CHANNEL *Chan ));
+GLOBAL unsigned int Channel_CreationTime PARAMS(( CHANNEL *Chan ));
#endif
GLOBAL bool Channel_AddInvite PARAMS((CHANNEL *c, const char *Mask, bool OnlyOnce ));
blob - df464a7dba7efca0058cdede4d18ec8090a7eeea
blob + a4c1d89b330ed175bb02ea158c595693a22be11e
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
if (the_args[0])
strlcat(the_modes, the_args, sizeof(the_modes));
- return IRC_WriteStrClient(Origin, RPL_CHANNELMODEIS_MSG,
- Client_ID(Origin), Channel_Name(Channel), the_modes);
+ if (!IRC_WriteStrClient(Origin, RPL_CHANNELMODEIS_MSG,
+ Client_ID(Origin), Channel_Name(Channel),
+ the_modes))
+ return DISCONNECTED;
+#ifndef STRICT_RFC
+ if (!IRC_WriteStrClient(Origin, RPL_CREATIONTIME_MSG,
+ Client_ID(Origin), Channel_Name(Channel),
+ Channel_CreationTime(Channel)))
+ return DISCONNECTED;
+#endif
+ return CONNECTED;
}
blob - 03ddc363375c7633abd0234761eee4c8b2d67353
blob + 900d2ff1101a9f80d77cc6efc75194ca48fa07a4
--- src/ngircd/messages.h
+++ src/ngircd/messages.h
#define RPL_LIST_MSG "322 %s %s %ld :%s"
#define RPL_LISTEND_MSG "323 %s :End of LIST"
#define RPL_CHANNELMODEIS_MSG "324 %s %s +%s"
+#define RPL_CREATIONTIME_MSG "329 %s %s %ld"
#define RPL_NOTOPIC_MSG "331 %s %s :No topic is set"
#define RPL_TOPIC_MSG "332 %s %s :%s"
#define RPL_TOPICSETBY_MSG "333 %s %s %s %u"