diff --git a/src/input/Offset.hxx b/src/input/Offset.hxx
index e5d0be21f..725591e6c 100644
--- a/src/input/Offset.hxx
+++ b/src/input/Offset.hxx
@@ -29,4 +29,10 @@
  */
 typedef uint64_t offset_type;
 
+/**
+ * To format an offset_type with printf().  To use this, include
+ * <cinttypes>.
+ */
+#define PRIoffset PRIu64
+
 #endif
diff --git a/src/input/plugins/CurlInputPlugin.cxx b/src/input/plugins/CurlInputPlugin.cxx
index 31ade2ab3..aa4b0d6d5 100644
--- a/src/input/plugins/CurlInputPlugin.cxx
+++ b/src/input/plugins/CurlInputPlugin.cxx
@@ -44,6 +44,8 @@
 #include "Log.hxx"
 #include "PluginUnavailable.hxx"
 
+#include <cinttypes>
+
 #include <assert.h>
 #include <string.h>
 
@@ -423,7 +425,7 @@ CurlInputStream::SeekInternal(offset_type new_offset)
 
 	if (offset > 0) {
 		char range[32];
-		sprintf(range, "%llu-", (unsigned long long)offset);
+		sprintf(range, "%" PRIoffset "-", offset);
 		request->SetOption(CURLOPT_RANGE, range);
 	}