X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/885203035d6a873457e5c5eb12bff5c501d11179..2c2e0aa96ec22228874d6ddb859ca4ff99f6023d:/modules/m_map.c diff --git a/modules/m_map.c b/modules/m_map.c index aeb7c7f..d86fe67 100644 --- a/modules/m_map.c +++ b/modules/m_map.c @@ -29,6 +29,7 @@ #include "send.h" #include "s_conf.h" #include "sprintf_irc.h" +#include "scache.h" #define USER_COL 50 /* display | Users: %d at col 50 */ @@ -73,6 +74,7 @@ static int mo_map(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { dump_map(client_p, &me, buf); + scache_send_missing(client_p); sendto_one_numeric(client_p, RPL_MAPEND, form_str(RPL_MAPEND)); return 0; @@ -85,9 +87,9 @@ mo_map(struct Client *client_p, struct Client *source_p, int parc, const char *p static void dump_map(struct Client *client_p, struct Client *root_p, char *pbuf) { - int cnt = 0, i = 0, len; + int cnt = 0, i = 0, len, frac; struct Client *server_p; - dlink_node *ptr; + rb_dlink_node *ptr; *pbuf = '\0'; strlcat(pbuf, root_p->name, BUFSIZE); @@ -108,15 +110,16 @@ dump_map(struct Client *client_p, struct Client *root_p, char *pbuf) } } - ircsnprintf(buf + USER_COL, BUFSIZE - USER_COL, - " | Users: %5lu (%4.1f%%)", dlink_list_length(&root_p->serv->users), - 100 * (float) dlink_list_length(&root_p->serv->users) / (float) Count.total); + frac = (1000 * rb_dlink_list_length(&root_p->serv->users) + Count.total / 2) / Count.total; + rb_snprintf(buf + USER_COL, BUFSIZE - USER_COL, + " | Users: %5lu (%2d.%1d%%)", rb_dlink_list_length(&root_p->serv->users), + frac / 10, frac % 10); sendto_one_numeric(client_p, RPL_MAP, form_str(RPL_MAP), buf); if(root_p->serv->servers.head != NULL) { - cnt += dlink_list_length(&root_p->serv->servers); + cnt += rb_dlink_list_length(&root_p->serv->servers); if(cnt) { @@ -129,7 +132,7 @@ dump_map(struct Client *client_p, struct Client *root_p, char *pbuf) } } i = 1; - DLINK_FOREACH(ptr, root_p->serv->servers.head) + RB_DLINK_FOREACH(ptr, root_p->serv->servers.head) { server_p = ptr->data; *pbuf = ' ';