]> granicus.if.org Git - vnstat/commitdiff
handle decimal conversion character with a define instead of if/else structures in...
authorTeemu Toivola <git@humdi.net>
Wed, 26 Feb 2014 20:30:16 +0000 (22:30 +0200)
committerTeemu Toivola <git@humdi.net>
Wed, 26 Feb 2014 20:30:16 +0000 (22:30 +0200)
src/common.h
src/dbshow.c
src/misc.c

index af125d1c867cc5abe79933cc75bc8a0d4ace71bb..b0c0456d3fd65969fa4e17d792bdba1f621df642 100644 (file)
 #include <ifaddrs.h>
 #endif
 
+/* OpenBSD and NetBSD don't support the ' character (decimal conversion) in printf formatting */
+#if !defined(__OpenBSD__) && !defined(__NetBSD__)
+#define DECCONV "'"
+#else
+#define DECCONV
+#endif
+
 /*
 
 Note! These are only the default values for settings
index a99b005bb435f2f126a3d98d9bb1446895bfc7d9..3eb25e8cbfd675a86a8f23bce33e26ab5eafa68a 100644 (file)
@@ -932,11 +932,7 @@ void showhours(void)
        /* hours and traffic */
        for (i=0;i<=7;i++) {
                s=tmax+i+1;
-#if !defined(__OpenBSD__)
-               snprintf(matrix[15+i], 81, "%02d %'10"PRIu64" %'10"PRIu64"    %02d %'10"PRIu64" %'10"PRIu64"    %02d %'10"PRIu64" %'10"PRIu64"",s%24, data.hour[s%24].rx, data.hour[s%24].tx, (s+8)%24, data.hour[(s+8)%24].rx, data.hour[(s+8)%24].tx, (s+16)%24, data.hour[(s+16)%24].rx, data.hour[(s+16)%24].tx);
-#else
-               snprintf(matrix[15+i], 81, "%02d %10"PRIu64" %10"PRIu64"    %02d %10"PRIu64" %10"PRIu64"    %02d %10"PRIu64" %10"PRIu64"",s%24, data.hour[s%24].rx, data.hour[s%24].tx, (s+8)%24, data.hour[(s+8)%24].rx, data.hour[(s+8)%24].tx, (s+16)%24, data.hour[(s+16)%24].rx, data.hour[(s+16)%24].tx);
-#endif
+               snprintf(matrix[15+i], 81, "%02d %"DECCONV"10"PRIu64" %"DECCONV"10"PRIu64"    %02d %"DECCONV"10"PRIu64" %"DECCONV"10"PRIu64"    %02d %"DECCONV"10"PRIu64" %"DECCONV"10"PRIu64"",s%24, data.hour[s%24].rx, data.hour[s%24].tx, (s+8)%24, data.hour[(s+8)%24].rx, data.hour[(s+8)%24].tx, (s+16)%24, data.hour[(s+16)%24].rx, data.hour[(s+16)%24].tx);
        }
 
        /* clean \0 */
index eeb5782eeee119df8538ff82ffdcb206d9d8046f..8e6d130761789f66763953a93e88393b158c405d 100644 (file)
@@ -228,35 +228,19 @@ char *getvalue(uint64_t mb, uint64_t kb, int len, int type)
        if ( (type==2) && (kB==0) ){
                snprintf(buffer, 64, "%*s    ", len-cfg.unit, "--");
        } else {
-#if !defined(__OpenBSD__) && !defined(__NetBSD__)
                /* try to figure out what unit to use */
                if (kB>=1048576000) { /* 1024*1024*1000 - value >=1000 GiB -> show in TiB */
-                       snprintf(buffer, 64, "%'*.*f %s", len, declen, kB/(float)1073741824, getunit(4)); /* 1024*1024*1024 */
+                       snprintf(buffer, 64, "%"DECCONV"*.*f %s", len, declen, kB/(float)1073741824, getunit(4)); /* 1024*1024*1024 */
                } else if (kB>=1024000) { /* 1024*1000 - value >=1000 MiB -> show in GiB */
-                       snprintf(buffer, 64, "%'*.*f %s", len, declen, kB/(float)1048576, getunit(3)); /* 1024*1024 */
+                       snprintf(buffer, 64, "%"DECCONV"*.*f %s", len, declen, kB/(float)1048576, getunit(3)); /* 1024*1024 */
                } else if (kB>=1000) {
                        if (type==2) {
                                declen=0;
                        }
-                       snprintf(buffer, 64, "%'*.*f %s", len, declen, kB/(float)1024, getunit(2));
+                       snprintf(buffer, 64, "%"DECCONV"*.*f %s", len, declen, kB/(float)1024, getunit(2));
                } else {
-                       snprintf(buffer, 64, "%'*"PRIu64" %s", len, kB, getunit(1));
+                       snprintf(buffer, 64, "%"DECCONV"*"PRIu64" %s", len, kB, getunit(1));
                }
-#else
-               /* try to figure out what unit to use */
-               if (kB>=1048576000) { /* 1024*1024*1000 - value >=1000 GiB -> show in TiB */
-                       snprintf(buffer, 64, "%*.*f %s", len, declen, kB/(float)1073741824, getunit(4)); /* 1024*1024*1024 */
-               } else if (kB>=1024000) { /* 1024*1000 - value >=1000 MiB -> show in GiB */
-                       snprintf(buffer, 64, "%*.*f %s", len, declen, kB/(float)1048576, getunit(3)); /* 1024*1024 */
-               } else if (kB>=1000) {
-                       if (type==2) {
-                               declen=0;
-                       }
-                       snprintf(buffer, 64, "%*.*f %s", len, declen, kB/(float)1024, getunit(2));
-               } else {
-                       snprintf(buffer, 64, "%*"PRIu64" %s", len, kB, getunit(1));
-               }
-#endif
        }
 
        return buffer;
@@ -309,29 +293,16 @@ char *getrate(uint64_t mb, uint64_t kb, uint32_t interval, int len)
                len = 1;
        }
 
-#if !defined(__OpenBSD__) && !defined(__NetBSD__)
-       /* try to figure out what unit to use */
-       if (rate>=limit[2]) {
-               snprintf(buffer, 64, "%'*.2f %s", len, rate/(float)limit[2], getrateunit(unit, 4));
-       } else if (rate>=limit[1]) {
-               snprintf(buffer, 64, "%'*.2f %s", len, rate/(float)limit[1], getrateunit(unit, 3));
-       } else if (rate>=limit[0]) {
-               snprintf(buffer, 64, "%'*.2f %s", len, rate/(float)limit[0], getrateunit(unit, 2));
-       } else {
-               snprintf(buffer, 64, "%'*.*f %s", len, declen, rate, getrateunit(unit, 1));
-       }
-#else
        /* try to figure out what unit to use */
        if (rate>=limit[2]) {
-               snprintf(buffer, 64, "%*.2f %s", len, rate/(float)limit[2], getrateunit(unit, 4));
+               snprintf(buffer, 64, "%"DECCONV"*.2f %s", len, rate/(float)limit[2], getrateunit(unit, 4));
        } else if (rate>=limit[1]) {
-               snprintf(buffer, 64, "%*.2f %s", len, rate/(float)limit[1], getrateunit(unit, 3));
+               snprintf(buffer, 64, "%"DECCONV"*.2f %s", len, rate/(float)limit[1], getrateunit(unit, 3));
        } else if (rate>=limit[0]) {
-               snprintf(buffer, 64, "%*.2f %s", len, rate/(float)limit[0], getrateunit(unit, 2));
+               snprintf(buffer, 64, "%"DECCONV"*.2f %s", len, rate/(float)limit[0], getrateunit(unit, 2));
        } else {
-               snprintf(buffer, 64, "%*.*f %s", len, declen, rate, getrateunit(unit, 1));
+               snprintf(buffer, 64, "%"DECCONV"*.*f %s", len, declen, rate, getrateunit(unit, 1));
        }
-#endif
 
        return buffer;
 }