summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--archive.h9
-rw-r--r--concat.c4
-rw-r--r--export.c4
3 files changed, 11 insertions, 6 deletions
diff --git a/archive.h b/archive.h
index 3605a4b..0b8b6d8 100644
--- a/archive.h
+++ b/archive.h
@@ -25,6 +25,7 @@
  * covered work.
  */
 
+#include <inttypes.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <stdio.h>
@@ -54,6 +55,14 @@ extern const char *baseTitle;
 extern const char *baseMailto;
 extern const char *baseSubscribe;
 
+static inline struct U32 {
+	char s[sizeof("4294967295")];
+} u32(uint32_t u) {
+	struct U32 buf;
+	snprintf(buf.s, sizeof(buf.s), "%" PRIu32, u);
+	return buf;
+}
+
 static inline struct ISO8601 {
 	char s[sizeof("0000-00-00T00:00:00Z")];
 } iso8601(time_t time) {
diff --git a/concat.c b/concat.c
index c59a828..bd41913 100644
--- a/concat.c
+++ b/concat.c
@@ -82,10 +82,8 @@ void concatData(
 }
 
 static char *uidPath(uint32_t uid, const char *type) {
-	char str[32];
-	snprintf(str, sizeof(str), "%" PRIu32, uid);
 	struct Variable vars[] = {
-		{ "uid", str },
+		{ "uid", u32(uid).s },
 		{ "type", type },
 		{0},
 	};
diff --git a/export.c b/export.c
index 2b579c3..d4039e2 100644
--- a/export.c
+++ b/export.c
@@ -40,10 +40,8 @@
 #include "imap.h"
 
 static char *exportPath(uint32_t uid, const char *type) {
-	char str[32];
-	snprintf(str, sizeof(str), "%" PRIu32, uid);
 	struct Variable vars[] = {
-		{ "uid", str },
+		{ "uid", u32(uid).s },
 		{ "type", type },
 		{0},
 	};