tidy up services TS processing

This commit is contained in:
Mark 2004-03-10 22:31:20 +00:00
parent 0dc998796d
commit 5adedd9e06
9 changed files with 43 additions and 19 deletions

View file

@ -388,7 +388,7 @@ m_svsmode (char *origin, char **argv, int argc, int srv)
if (argv[0][0] == '#') {
do_svsmode_channel (origin, argv, argc);
} else {
do_svsmode_user (argv[0], argv[2]);
do_svsmode_user (argv[0], argv[2], NULL);
}
}
static void

View file

@ -456,7 +456,7 @@ m_svsmode (char *origin, char **argv, int argc, int srv)
if (argv[0][0] == '#') {
do_svsmode_channel (origin, argv, argc);
} else {
do_svsmode_user (argv[0], argv[2]);
do_svsmode_user (argv[0], argv[2], NULL);
}
}
static void

View file

@ -534,9 +534,9 @@ m_svsmode (char *origin, char **argv, int argc, int srv)
do_svsmode_channel (origin, argv, argc);
} else {
#ifdef ULTIMATE3
do_svsmode_user (argv[0], argv[2]);
do_svsmode_user (argv[0], argv[2], NULL);
#else
do_svsmode_user (argv[0], argv[1]);
do_svsmode_user (argv[0], argv[1], NULL);
#endif
}
}

View file

@ -499,10 +499,7 @@ m_svsmode (char *origin, char **argv, int argc, int srv)
if (argv[0][0] == '#') {
do_svsmode_channel (origin, argv, argc);
} else {
if (argv[2] && isdigit(*argv[2])) {
do_svsmode_servicests (argv[0], argv[2]);
}
do_svsmode_user (argv[0], argv[1]);
do_svsmode_user (argv[0], argv[1], argv[2]);
}
}

View file

@ -388,7 +388,7 @@ m_svsmode (char *origin, char **argv, int argc, int srv)
if (argv[0][0] == '#') {
do_svsmode_channel (origin, argv, argc);
} else {
do_svsmode_user (argv[0], argv[2]);
do_svsmode_user (argv[0], argv[2], NULL);
}
}

40
ircd.c
View file

@ -1783,6 +1783,40 @@ do_mode_user (const char* nick, const char* modes)
UserMode (nick, modes);
}
void
do_svsmode_user (const char* nick, const char* modes, const char* ts)
{
char modebuf[MODESIZE];
if (ts && isdigit(*ts)) {
char* pModes;
char* pNewModes;
int cnt = 0;
SetUserServicesTS (nick, ts);
/* If only setting TS, we do not need further mode processing */
if(strcasecmp(modes, "+d") == 0) {
nlog (LOG_DEBUG3, LOG_CORE, "dropping modes since this is a services TS", modes);
return;
}
/* We need to strip the d from the mode string */
pNewModes = modebuf;
pModes = modebuf;
while(*pModes) {
if(*pModes != 'd') {
*pNewModes = *pModes;
}
pModes++;
pNewModes++;
}
/* NULL terminate */
*pNewModes = 0;
UserMode (nick, modebuf);
} else {
UserMode (nick, modes);
}
}
void
do_mode_channel (char *origin, char **argv, int argc)
{
@ -1813,12 +1847,6 @@ do_topic (const char* chan, const char *owner, const char* ts, const char *topic
ChanTopic (chan, owner, ts, topic);
}
void
do_svsmode_servicests (const char* nick, const char* ts)
{
SetUserServicesTS (nick, ts);
}
void
do_server (const char *name, const char *uplink, const char* hops, const char *numeric, const char *infoline, int srv)
{

3
ircd.h
View file

@ -123,16 +123,15 @@ void do_smode (const char* nick, const char* modes);
#endif
void do_mode_user (const char* nick, const char* modes);
void do_mode_channel (char *origin, char **argv, int argc);
void do_svsmode_user (const char* nick, const char* modes, const char* ts);
/* These are the same for now but we might need to be different in the
* future so use macros
*/
#define do_svsmode_user do_mode_user
#define do_svsmode_channel do_mode_channel
void do_away (const char* nick, const char *reason);
void do_vhost (const char* nick, const char *vhost);
void do_nickchange (const char * oldnick, const char *newnick, const char * ts);
void do_topic (const char* chan, const char *owner, const char* ts, const char *topic);
void do_svsmode_servicests (const char* nick, const char* ts);
void do_server (const char *name, const char *uplink, const char* hops, const char *numeric, const char *infoline, int srv);
#ifdef MSG_BURST
void do_burst (char *origin, char **argv, int argc);

View file

@ -416,7 +416,7 @@ m_svsmode (char *origin, char **argv, int argc, int srv)
if (argv[0][0] == '#') {
do_svsmode_channel (origin, argv, argc);
} else {
do_svsmode_user (argv[0], argv[2]);
do_svsmode_user (argv[0], argv[2], NULL);
}
}
static void

View file

@ -403,7 +403,7 @@ m_svsmode (char *origin, char **argv, int argc, int srv)
if (argv[0][0] == '#') {
do_svsmode_channel (origin, argv, argc);
} else {
do_svsmode_user (argv[0], argv[1]);
do_svsmode_user (argv[0], argv[1], NULL);
}
}
static void