Introduce SLIRP_PRIsize/ssize_t
diff --git a/src/util.h b/src/util.h
index 668a73c..0d5a300 100644
--- a/src/util.h
+++ b/src/util.h
@@ -73,6 +73,35 @@
#define G_SIZEOF_MEMBER(type, member) sizeof(((type *)0)->member)
#endif
+/* size_t, ssize_t format specifier. Windows, naturally, has to be different
+ * and, despite implementing "%z", MinGW hasn't caught up. */
+#if defined(__MINGW64__) || defined(_WIN64)
+# if defined(PRIu64)
+# define SLIRP_PRIsize_t PRIu64
+# else
+# define SLIRP_PRIsize_t "llu"
+# endif
+# if defined(PRId64)
+# define SLIRP_PRIssize_t PRId64
+# else
+# define SLIRP_PRIssize_t "lld"
+# endif
+#elif defined(__MINGW32__) || defined(_WIN32)
+# if defined(PRIu32)
+# define SLIRP_PRIsize_t PRIu32
+# else
+# define SLIRP_PRIsize_t "lu"
+# endif
+# if defined(PRId32)
+# define SLIRP_PRIssize_t PRId32
+# else
+# define SLIRP_PRIssize_t "ld"
+# endif
+#else
+#define SLIRP_PRIsize_t "zu"
+#define SLIRP_PRIssize_t "zd"
+#endif
+
#if defined(_WIN32) /* CONFIG_IOVEC */
#if !defined(IOV_MAX) /* XXX: to avoid duplicate with QEMU osdep.h */
struct iovec {