extern int dbuf_fill(dbuf */*db*/, int /*ch*/, size_t /*sz*/);
#define dbuf_fill(db, ch, sz) (buf_fill(DBUF_BUF(db), (ch), (sz)))
+/* --- @{,d}buf_align@ --- *
+ *
+ * Arguments: @buf *b@ or @dbuf *db@ = pointer to a buffer block
+ * @size_t m, a@ = alignment multiple and offset
+ * @size_t *sz_out@ = where to put the length
+ *
+ * Returns: Pointer to previous buffer position, or null on error.
+ *
+ * Use: Advance the buffer position as little as possible such that
+ * it is @a@ greater than a multiple of @m@, returning the
+ * (possibly empty) portion of the buffer passed over.
+ */
+
+extern void *buf_align(buf */*b*/, size_t /*m*/, size_t /*a*/,
+ size_t */*sz_out*/);
+extern void *dbuf_align(dbuf */*db*/, size_t /*m*/, size_t /*a*/,
+ size_t */*sz_out*/);
+#define dbuf_align(db, m, a, sz_out) \
+ (buf_align(DBUF_BUF(db), (m), (a), (sz_out)))
+
/* --- @{,d}buf_alignskip@ --- *
*
* Arguments: @buf *b@ or @dbuf *db@ = pointer to a buffer block