Improve curl code.
[monky] / src / net_stat.c
index 34c7fe1..c8c7640 100644 (file)
@@ -10,7 +10,7 @@
  * Please see COPYING for details
  *
  * Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen
- * Copyright (c) 2005-2009 Brenden Matthews, Philip Kovacs, et. al.
+ * Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al.
  *     (see AUTHORS)
  * All rights reserved.
  *
@@ -35,6 +35,7 @@
 #include "net/if.h"
 #include "text_object.h"
 #include "net_stat.h"
+#include <netinet/in.h>
 #include <errno.h>
 #include <string.h>
 #include <sys/ioctl.h>
@@ -42,7 +43,7 @@
 
 /* network interface stuff */
 
-struct net_stat netstats[16];
+struct net_stat netstats[MAX_NET_INTERFACES];
 
 struct net_stat *get_net_stat(const char *dev, void *free_at_crash1, void *free_at_crash2)
 {
@@ -53,21 +54,21 @@ struct net_stat *get_net_stat(const char *dev, void *free_at_crash1, void *free_
        }
 
        /* find interface stat */
-       for (i = 0; i < 16; i++) {
+       for (i = 0; i < MAX_NET_INTERFACES; i++) {
                if (netstats[i].dev && strcmp(netstats[i].dev, dev) == 0) {
                        return &netstats[i];
                }
        }
 
        /* wasn't found? add it */
-       for (i = 0; i < 16; i++) {
+       for (i = 0; i < MAX_NET_INTERFACES; i++) {
                if (netstats[i].dev == 0) {
                        netstats[i].dev = strndup(dev, text_buffer_size);
                        return &netstats[i];
                }
        }
 
-       CRIT_ERR(free_at_crash1, free_at_crash2, "too many interfaces used (limit is 16)");
+       CRIT_ERR(free_at_crash1, free_at_crash2, "too many interfaces used (limit is %d)", MAX_NET_INTERFACES);
        return 0;
 }
 
@@ -205,24 +206,24 @@ void parse_net_stat_graph_arg(struct text_object *obj, const char *arg, void *fr
        obj->data.opaque = get_net_stat(DEFAULTNETDEV, obj, free_at_crash);
 }
 
-void print_downspeedgraph(struct text_object *obj, char *p)
+void print_downspeedgraph(struct text_object *obj, char *p, int p_max_size)
 {
        struct net_stat *ns = obj->data.opaque;
 
-       if (!ns)
+       if (!ns || !p_max_size)
                return;
 
-       new_graph(obj, p, ns->recv_speed / 1024.0);
+       new_graph(obj, p, p_max_size, ns->recv_speed / 1024.0);
 }
 
-void print_upspeedgraph(struct text_object *obj, char *p)
+void print_upspeedgraph(struct text_object *obj, char *p, int p_max_size)
 {
        struct net_stat *ns = obj->data.opaque;
 
-       if (!ns)
+       if (!ns || !p_max_size)
                return;
 
-       new_graph(obj, p, ns->trans_speed / 1024.0);
+       new_graph(obj, p, p_max_size, ns->trans_speed / 1024.0);
 }
 #endif /* X11 */
 
@@ -304,14 +305,8 @@ void print_wireless_link_bar(struct text_object *obj, char *p, int p_max_size)
        if (!ns)
                return;
 
-#ifdef X11
-       if(output_methods & TO_X) {
-               new_bar(obj, p, ((double) ns->link_qual /
-                                       ns->link_qual_max) * 255.0);
-       } else
-#endif /* X11 */
-               new_bar_in_shell(obj, p, p_max_size, ((double) ns->link_qual /
-                                       ns->link_qual_max) * 100.0);
+       new_bar(obj, p, p_max_size,
+                       ((double) ns->link_qual / ns->link_qual_max) * 255.0);
 }
 #endif /* HAVE_IWLIB */
 #endif /* __linux__ */
@@ -319,7 +314,7 @@ void print_wireless_link_bar(struct text_object *obj, char *p, int p_max_size)
 void clear_net_stats(void)
 {
        int i;
-       for (i = 0; i < 16; i++) {
+       for (i = 0; i < MAX_NET_INTERFACES; i++) {
                if (netstats[i].dev) {
                        free(netstats[i].dev);
                }
@@ -405,7 +400,7 @@ void free_dns_data(void)
        memset(&dns_data, 0, sizeof(dns_data));
 }
 
-void update_dns_data(void)
+int update_dns_data(void)
 {
        FILE *fp;
        char line[256];
@@ -421,7 +416,7 @@ void update_dns_data(void)
        free_dns_data();
 
        if ((fp = fopen("/etc/resolv.conf", "r")) == NULL)
-               return;
+               return 0;
        while(!feof(fp)) {
                if (fgets(line, 255, fp) == NULL) {
                        break;
@@ -434,6 +429,7 @@ void update_dns_data(void)
                }
        }
        fclose(fp);
+       return 0;
 }
 
 void parse_nameserver_arg(struct text_object *obj, const char *arg)