diff options
-rw-r--r-- | bounce.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/bounce.h b/bounce.h index a2265c8..2010d45 100644 --- a/bounce.h +++ b/bounce.h @@ -26,6 +26,7 @@ */ #include <limits.h> +#include <stdarg.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> @@ -49,6 +50,18 @@ typedef unsigned char byte; +static inline char *seprintf(char *ptr, char *end, const char *fmt, ...) + __attribute__((format(printf, 3, 4))); +static inline char *seprintf(char *ptr, char *end, const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + int n = vsnprintf(ptr, end - ptr, fmt, ap); + va_end(ap); + if (n < 0) return NULL; + if (n > end - ptr) return end; + return ptr + n; +} + enum { MessageCap = 8191 + 512 }; enum { ParamCap = 15 }; |