l0 = l1;
if (l1 > l0)
- _vec_len (s) = l0;
+ vec_set_len (s, l0);
else if (l0 > l1)
{
uword n = l0 - l1;
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);
- memset (s + l1, fi->pad_char, n_right);
+ clib_memset (s + l1, fi->pad_char, n_right);
}
}
return s;
case 'x':
case 'X':
case 'u':
+ case 'o':
case 'd':
{
u64 number;
break;
}
+ if (c == 'o')
+ o.base = 8;
+
s = format_integer (s, number, &o);
}
break;
return f;
}
-u8 *
+__clib_export u8 *
va_format (u8 * s, const char *fmt, va_list * va)
{
const u8 *f = (u8 *) fmt, *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;
}
-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);
+#ifdef __COVERITY__
+ if (s == 0)
+ return (u8 *) "liar liar pants on fire s can't be zero!";
+#endif
return s;
}
-word
+__clib_export word
va_fformat (FILE * f, char *fmt, va_list * va)
{
word ret;
return ret;
}
-word
+__clib_export word
fformat (FILE * f, char *fmt, ...)
{
va_list va;
}
#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;