summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--chat.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/chat.h b/chat.h
index e48799c..e9bee8b 100644
--- a/chat.h
+++ b/chat.h
@@ -44,6 +44,18 @@
 typedef unsigned uint;
 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;
+	ptr += n;
+	return (ptr > end ? end : ptr);
+}
+
 struct Cat {
 	char *buf;
 	size_t cap;