m_whois: refactor channel list to use multiline
This commit is contained in:
parent
e51d9a67be
commit
d901e969a3
1 changed files with 5 additions and 28 deletions
|
@ -224,12 +224,7 @@ static void
|
||||||
single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
||||||
{
|
{
|
||||||
char buf[BUFSIZE];
|
char buf[BUFSIZE];
|
||||||
int cur_len = 0;
|
|
||||||
int mlen;
|
|
||||||
char *t;
|
|
||||||
int tlen;
|
|
||||||
hook_data_client hdata;
|
hook_data_client hdata;
|
||||||
int extra_space = 0;
|
|
||||||
struct sockaddr_in ip4;
|
struct sockaddr_in ip4;
|
||||||
|
|
||||||
if(target_p->user == NULL)
|
if(target_p->user == NULL)
|
||||||
|
@ -242,7 +237,7 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
||||||
target_p->name, target_p->username,
|
target_p->name, target_p->username,
|
||||||
target_p->host, target_p->info);
|
target_p->host, target_p->info);
|
||||||
|
|
||||||
cur_len = mlen = sprintf(buf, form_str(RPL_WHOISCHANNELS),
|
send_multiline_init(source_p, " ", form_str(RPL_WHOISCHANNELS),
|
||||||
get_id(&me, source_p), get_id(source_p, source_p),
|
get_id(&me, source_p), get_id(source_p, source_p),
|
||||||
target_p->name);
|
target_p->name);
|
||||||
|
|
||||||
|
@ -250,16 +245,8 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
||||||
* in full names; note that serverhiding may require more space
|
* in full names; note that serverhiding may require more space
|
||||||
* for a different server name (not done here) -- jilles
|
* for a different server name (not done here) -- jilles
|
||||||
*/
|
*/
|
||||||
if (!MyConnect(source_p))
|
send_multiline_remote_pad(source_p, &me);
|
||||||
{
|
send_multiline_remote_pad(source_p, source_p);
|
||||||
extra_space = strlen(source_p->name) - 9;
|
|
||||||
if (extra_space < 0)
|
|
||||||
extra_space = 0;
|
|
||||||
extra_space += strlen(me.name) - 2; /* make sure >= 0 */
|
|
||||||
cur_len += extra_space;
|
|
||||||
}
|
|
||||||
|
|
||||||
t = buf + mlen;
|
|
||||||
|
|
||||||
hdata.client = source_p;
|
hdata.client = source_p;
|
||||||
hdata.target = target_p;
|
hdata.target = target_p;
|
||||||
|
@ -288,25 +275,15 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
||||||
|
|
||||||
if(hdata_vis.approved || operspy)
|
if(hdata_vis.approved || operspy)
|
||||||
{
|
{
|
||||||
if((cur_len + strlen(chptr->chname) + strlen("!@+ ")) > (BUFSIZE - strlen("\r\n")))
|
send_multiline_item(source_p, "%s%s%s",
|
||||||
{
|
|
||||||
sendto_one(source_p, "%s", buf);
|
|
||||||
cur_len = mlen + extra_space;
|
|
||||||
t = buf + mlen;
|
|
||||||
}
|
|
||||||
|
|
||||||
tlen = sprintf(t, "%s%s%s ",
|
|
||||||
hdata_vis.approved ? "" : "!",
|
hdata_vis.approved ? "" : "!",
|
||||||
find_channel_status(mt, 1),
|
find_channel_status(mt, 1),
|
||||||
chptr->chname);
|
chptr->chname);
|
||||||
t += tlen;
|
|
||||||
cur_len += tlen;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cur_len > mlen + extra_space)
|
send_multiline_fini(source_p, NULL);
|
||||||
sendto_one(source_p, "%s", buf);
|
|
||||||
|
|
||||||
sendto_one_numeric(source_p, RPL_WHOISSERVER, form_str(RPL_WHOISSERVER),
|
sendto_one_numeric(source_p, RPL_WHOISSERVER, form_str(RPL_WHOISSERVER),
|
||||||
target_p->name, target_p->servptr->name,
|
target_p->name, target_p->servptr->name,
|
||||||
|
|
Loading…
Reference in a new issue