tidy up services TS processing
This commit is contained in:
parent
0dc998796d
commit
5adedd9e06
9 changed files with 43 additions and 19 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
5
Unreal.c
5
Unreal.c
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
2
Viagra.c
2
Viagra.c
|
@ -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
40
ircd.c
|
@ -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
3
ircd.h
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
2
mystic.c
2
mystic.c
|
@ -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
|
||||
|
|
Reference in a new issue