uns
stk_printf_internal(char *fmt, ...)
{
- va_list args;
+ va_list args, args2;
va_start(args, fmt);
if (!stk_printf_buf)
{
}
for (;;)
{
- int l = vsnprintf(stk_printf_buf, stk_printf_len, fmt, args);
+ va_copy(args2, args);
+ int l = vsnprintf(stk_printf_buf, stk_printf_len, fmt, args2);
+ va_end(args2);
if (l < 0)
stk_printf_len *= 2;
else if (l < stk_printf_len)
- return l+1;
+ {
+ va_end(args);
+ return l+1;
+ }
else
stk_printf_len = MAX(stk_printf_len*2, l+1);
stk_printf_buf = xrealloc(stk_printf_buf, stk_printf_len);
}
}
+void
+stk_hexdump_internal(char *dst, byte *src, uns n)
+{
+ for (uns i=0; i<n; i++)
+ {
+ if (i)
+ *dst++ = ' ';
+ dst += sprintf(dst, "%02x", *src++);
+ }
+ *dst = 0;
+}
+
#ifdef TEST
int main(void)
{
- char *a = stk_strdup("are");
+ char *a = stk_strndup("are!",3);
a = stk_strcat(a, " the ");
- a = stk_strmulticat(a, "Jabberwock, ", "my", NULL);
+ a = stk_strmulticat(a, stk_strdup("Jabberwock, "), "my", NULL);
char *arr[] = { a, " son" };
a = stk_strarraycat(arr, 2);
a = stk_printf("Bew%s!", a);
puts(a);
+ puts(stk_hexdump(a, 3));
return 0;
}