mirror of
https://github.com/matrix-construct/construct
synced 2024-11-19 16:30:52 +01:00
m_away.c derived from ratbox3 - looks much better and do not use deprecated DupString.
This commit is contained in:
parent
423f18a073
commit
90840a2915
1 changed files with 41 additions and 66 deletions
107
modules/m_away.c
107
modules/m_away.c
|
@ -70,71 +70,46 @@ DECLARE_MODULE_AV1(away, NULL, NULL, away_clist, NULL, NULL, "$Revision: 3370 $"
|
||||||
static int
|
static int
|
||||||
m_away(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
|
m_away(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
|
||||||
{
|
{
|
||||||
char *away;
|
if(MyClient(source_p) && !IsFloodDone(source_p))
|
||||||
char *awy2;
|
flood_endgrace(source_p);
|
||||||
|
|
||||||
if(MyClient(source_p) && !IsFloodDone(source_p))
|
if(!IsClient(source_p))
|
||||||
flood_endgrace(source_p);
|
return 0;
|
||||||
|
|
||||||
if(!IsClient(source_p))
|
if(parc < 2 || EmptyString(parv[1]))
|
||||||
return 0;
|
{
|
||||||
|
/* Marking as not away */
|
||||||
away = source_p->user->away;
|
if(source_p->user->away != NULL)
|
||||||
|
{
|
||||||
if(parc < 2 || EmptyString(parv[1]))
|
/* we now send this only if they were away before --is */
|
||||||
{
|
sendto_server(client_p, NULL, CAP_TS6, NOCAPS,
|
||||||
/* Marking as not away */
|
":%s AWAY", use_id(source_p));
|
||||||
if(away)
|
sendto_server(client_p, NULL, NOCAPS, CAP_TS6,
|
||||||
{
|
":%s AWAY", source_p->name);
|
||||||
/* we now send this only if they were away before --is */
|
free_away(source_p);
|
||||||
sendto_server(client_p, NULL, CAP_TS6, NOCAPS,
|
}
|
||||||
":%s AWAY", use_id(source_p));
|
if(MyConnect(source_p))
|
||||||
sendto_server(client_p, NULL, NOCAPS, CAP_TS6,
|
sendto_one(source_p, form_str(RPL_UNAWAY),
|
||||||
":%s AWAY", source_p->name);
|
me.name, source_p->name);
|
||||||
rb_free(away);
|
return 0;
|
||||||
source_p->user->away = NULL;
|
}
|
||||||
}
|
|
||||||
if(MyConnect(source_p))
|
|
||||||
sendto_one_numeric(source_p, RPL_UNAWAY, form_str(RPL_UNAWAY));
|
if(source_p->user->away == NULL)
|
||||||
return 0;
|
{
|
||||||
}
|
allocate_away(source_p);
|
||||||
|
rb_strlcpy(source_p->user->away, parv[1], AWAYLEN);
|
||||||
/* Marking as away */
|
sendto_server(client_p, NULL, CAP_TS6, NOCAPS,
|
||||||
|
":%s AWAY :%s", use_id(source_p), source_p->user->away);
|
||||||
if(MyConnect(source_p))
|
sendto_server(client_p, NULL, NOCAPS, CAP_TS6,
|
||||||
{
|
":%s AWAY :%s", source_p->name, source_p->user->away);
|
||||||
if(!IsOper(source_p) &&
|
|
||||||
(CurrentTime - source_p->localClient->last_away) < ConfigFileEntry.pace_wait)
|
} else {
|
||||||
{
|
rb_strlcpy(source_p->user->away, parv[1], AWAYLEN);
|
||||||
sendto_one(source_p, form_str(RPL_LOAD2HI),
|
}
|
||||||
me.name, source_p->name, "AWAY");
|
|
||||||
return 0;
|
if(MyConnect(source_p))
|
||||||
}
|
sendto_one(source_p, form_str(RPL_NOWAWAY), me.name, source_p->name);
|
||||||
|
|
||||||
source_p->localClient->last_away = CurrentTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
awy2 = LOCAL_COPY(parv[1]);
|
|
||||||
if(strlen(awy2) > AWAYLEN)
|
|
||||||
awy2[AWAYLEN] = '\0';
|
|
||||||
|
|
||||||
/* we now send this only if they weren't away already --is */
|
|
||||||
if(!away)
|
|
||||||
{
|
|
||||||
sendto_server(client_p, NULL, CAP_TS6, NOCAPS,
|
|
||||||
":%s AWAY :%s", use_id(source_p), awy2);
|
|
||||||
sendto_server(client_p, NULL, NOCAPS, CAP_TS6,
|
|
||||||
":%s AWAY :%s", source_p->name, awy2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
rb_free(away);
|
|
||||||
|
|
||||||
DupString(away, awy2);
|
|
||||||
|
|
||||||
source_p->user->away = away;
|
|
||||||
|
|
||||||
if(MyConnect(source_p))
|
|
||||||
sendto_one_numeric(source_p, RPL_NOWAWAY, form_str(RPL_NOWAWAY));
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue