+enum {
+ /*
+ * upper bound on number of decimal digits required to convert
+ * cdecl_uintmax.
+ */
+ MAX_UINT_DIGITS = (CHAR_BIT * sizeof (cdecl_uintmax) + 2)/3
+};
+
+size_t cdecl__emit_uint(struct output_state *dst, cdecl_uintmax val)
+{
+ char buf[MAX_UINT_DIGITS + 1], *p = &buf[sizeof buf];
+
+ *(--p) = 0;
+ while (val > 0) {
+ *(--p) = '0' + val % 10;
+ val /= 10;
+ }
+
+ return cdecl__emit(dst, p);
+}
+