]> jfr.im git - irc/rqf/shadowircd.git/commitdiff
Unbreak percentage display in /map.
authorJilles Tjoelker <redacted>
Thu, 3 Apr 2008 20:55:09 +0000 (22:55 +0200)
committerJilles Tjoelker <redacted>
Thu, 3 Apr 2008 20:55:09 +0000 (22:55 +0200)
This now uses integer arithmetic instead of floating point.

modules/m_map.c

index f8c87acfac4798692aa08a705b91a1c3b3642dad..d86fe67d43b9332bb3dda948eaf40f82ff610e7c 100644 (file)
@@ -87,7 +87,7 @@ 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;
        rb_dlink_node *ptr;
        *pbuf = '\0';
@@ -110,9 +110,10 @@ dump_map(struct Client *client_p, struct Client *root_p, char *pbuf)
                }
        }
 
+       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 (%4.1f%%)", rb_dlink_list_length(&root_p->serv->users),
-                100 * (float) rb_dlink_list_length(&root_p->serv->users) / (float) Count.total);
+                " | 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);