Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
api: vapi: honor non-blocking setting
[vpp.git]
/
src
/
vppinfra
/
format.c
diff --git
a/src/vppinfra/format.c
b/src/vppinfra/format.c
index
999b093
..
ccd999e
100644
(file)
--- a/
src/vppinfra/format.c
+++ b/
src/vppinfra/format.c
@@
-62,6
+62,7
@@
#include <vppinfra/error.h>
#include <vppinfra/string.h>
#include <vppinfra/os.h> /* os_puts */
#include <vppinfra/error.h>
#include <vppinfra/string.h>
#include <vppinfra/os.h> /* os_puts */
+#include <vppinfra/math.h>
typedef struct
{
typedef struct
{
@@
-138,13
+139,13
@@
justify (u8 * s, format_info_t * fi, uword s_len_orig)
if (n_left > 0)
{
vec_insert (s, n_left, i0);
if (n_left > 0)
{
vec_insert (s, n_left, i0);
- memset (s + i0, fi->pad_char, n_left);
+
clib_
memset (s + i0, fi->pad_char, n_left);
l1 = vec_len (s);
}
if (n_right > 0)
{
vec_resize (s, n_right);
l1 = vec_len (s);
}
if (n_right > 0)
{
vec_resize (s, n_right);
- memset (s + l1, fi->pad_char, n_right);
+
clib_
memset (s + l1, fi->pad_char, n_right);
}
}
return s;
}
}
return s;
@@
-277,6
+278,7
@@
do_percent (u8 ** _s, const u8 * fmt, va_list * va)
case 'x':
case 'X':
case 'u':
case 'x':
case 'X':
case 'u':
+ case 'o':
case 'd':
{
u64 number;
case 'd':
{
u64 number;
@@
-310,6
+312,9
@@
do_percent (u8 ** _s, const u8 * fmt, va_list * va)
break;
}
break;
}
+ if (c == 'o')
+ o.base = 8;
+
s = format_integer (s, number, &o);
}
break;
s = format_integer (s, number, &o);
}
break;
@@
-382,7
+387,7
@@
done:
return f;
}
return f;
}
-u8 *
+
__clib_export
u8 *
va_format (u8 * s, const char *fmt, va_list * va)
{
const u8 *f = (u8 *) fmt, *g;
va_format (u8 * s, const char *fmt, va_list * va)
{
const u8 *f = (u8 *) fmt, *g;
@@
-411,20
+416,29
@@
va_format (u8 * s, const char *fmt, va_list * va)
if (f > g)
vec_add (s, g, f - g);
if (f > g)
vec_add (s, g, f - g);
+#ifdef __COVERITY__
+ if (s == 0)
+ return (u8 *) "liar liar pants on fire s can't be zero!";
+#endif
+
return s;
}
return s;
}
-u8 *
+
__clib_export
u8 *
format (u8 * s, const char *fmt, ...)
{
va_list va;
va_start (va, fmt);
s = va_format (s, fmt, &va);
va_end (va);
format (u8 * s, const char *fmt, ...)
{
va_list va;
va_start (va, fmt);
s = va_format (s, fmt, &va);
va_end (va);
+#ifdef __COVERITY__
+ if (s == 0)
+ return (u8 *) "liar liar pants on fire s can't be zero!";
+#endif
return s;
}
return s;
}
-word
+
__clib_export
word
va_fformat (FILE * f, char *fmt, va_list * va)
{
word ret;
va_fformat (FILE * f, char *fmt, va_list * va)
{
word ret;
@@
-448,7
+462,7
@@
va_fformat (FILE * f, char *fmt, va_list * va)
return ret;
}
return ret;
}
-word
+
__clib_export
word
fformat (FILE * f, char *fmt, ...)
{
va_list va;
fformat (FILE * f, char *fmt, ...)
{
va_list va;
@@
-462,7
+476,18
@@
fformat (FILE * f, char *fmt, ...)
}
#ifdef CLIB_UNIX
}
#ifdef CLIB_UNIX
-word
+__clib_export void
+fformat_append_cr (FILE * ofp, const char *fmt, ...)
+{
+ va_list va;
+
+ va_start (va, fmt);
+ (void) va_fformat (ofp, (char *) fmt, &va);
+ va_end (va);
+ fformat (ofp, "\n");
+}
+
+__clib_export word
fdformat (int fd, char *fmt, ...)
{
word ret;
fdformat (int fd, char *fmt, ...)
{
word ret;
@@
-708,8
+733,12
@@
format_float (u8 * s, f64 x, uword n_fraction_digits, uword output_style)
sign = 1;
}
sign = 1;
}
+ /* Check for not-a-number. */
+ if (isnan (x))
+ return format (s, "%cNaN", sign ? '-' : '+');
+
/* Check for infinity. */
/* Check for infinity. */
- if (
x == x / 2
)
+ if (
isinf (x)
)
return format (s, "%cinfinity", sign ? '-' : '+');
x = normalize (x, &expon, &prec);
return format (s, "%cinfinity", sign ? '-' : '+');
x = normalize (x, &expon, &prec);