1 ////////////////////////////////////////////////////////////////////////////////
3 static void trimstr (char *s
) {
6 while (*s
&& isspace(*s
)) ++s
;
7 for (e
= s
+strlen(s
); e
> s
; --e
) if (!isspace(e
[-1])) break;
8 if (e
<= s
) *s
= 0; else *e
= 0;
12 static char *SPrintfVA (const char *fmt
, va_list vaorig
) {
17 if (buf
== NULL
) { fprintf(stderr
, "\nFATAL: out of memory!\n"); abort(); }
23 olen
= vsnprintf(buf
, len
, fmt
, va
);
25 if (olen
>= 0 && olen
< len
) return buf
;
26 if (olen
< 0) olen
= len
*2-1;
27 nb
= realloc(buf
, olen
+1);
28 if (nb
== NULL
) { fprintf(stderr
, "\nFATAL: out of memory!\n"); abort(); }
35 static __attribute__((format(printf
,1,2))) char *SPrintf (const char *fmt
, ...) {
40 buf
= SPrintfVA(fmt
, va
);
46 K8TERM_API
__attribute__((noreturn
)) __attribute__((format(printf
,1,2))) void k8t_die (const char *errstr
, ...) {
49 fprintf(stderr
, "FATAL: ");
51 vfprintf(stderr
, errstr
, ap
);
53 fprintf(stderr
, "\n");