]> granicus.if.org Git - libnl/commitdiff
Add nl_rate2str()
authorThomas Graf <tgraf@suug.ch>
Thu, 9 Jun 2011 10:29:21 +0000 (12:29 +0200)
committerThomas Graf <tgraf@suug.ch>
Thu, 9 Jun 2011 10:29:21 +0000 (12:29 +0200)
include/netlink/utils.h
lib/utils.c

index 309e02f75b742a3e20d62894e542022c693cda37..a1ef82e547d7c41e9849e399c91f444445315215 100644 (file)
@@ -38,9 +38,15 @@ extern "C" {
 
 /** @} */
 
+enum {
+       NL_BYTE_RATE,
+       NL_BIT_RATE,
+};
+
 /* unit pretty-printing */
 extern double  nl_cancel_down_bytes(unsigned long long, char **);
 extern double  nl_cancel_down_bits(unsigned long long, char **);
+extern int     nl_rate2str(unsigned long long, int, char *, size_t);
 extern double  nl_cancel_down_us(uint32_t, char **);
 
 /* generic unit translations */
index b5076089d12d04ba55217cf16ba4ebfc023164ef..c7d3abd7fca55d0b2188dbf28668e63cae33c36b 100644 (file)
@@ -151,6 +151,27 @@ double nl_cancel_down_bits(unsigned long long l, char **unit)
                
 }
 
+int nl_rate2str(unsigned long long rate, int type, char *buf, size_t len)
+{
+       char *unit;
+       double frac;
+
+       switch (type) {
+       case NL_BYTE_RATE:
+               frac = nl_cancel_down_bytes(rate, &unit);
+               break;
+       
+       case NL_BIT_RATE:
+               frac = nl_cancel_down_bits(rate, &unit);
+               break;
+       
+       default:
+               BUG();
+       }
+
+       return snprintf(buf, len, "%.2f%s/s", frac, unit);
+}
+
 /**
  * Cancel down a micro second value
  * @arg        l               micro seconds