- if (BENSURE(b, 1))
- return (-1);
- return (*b->p++);
-}
-
-/* --- @buf_putbyte@ --- *
- *
- * Arguments: @buf *b@ = pointer to a buffer block
- * @int ch@ = byte to write
- *
- * Returns: Zero if OK, nonzero if there wasn't enough space.
- *
- * Use: Puts a single byte in a buffer.
- */
-
-int buf_putbyte(buf *b, int ch)
-{
- if (BENSURE(b, 1))
- return (-1);
- *b->p++ = ch;
- return (0);
-}
-
-/* --- @buf_getu16@ --- *
- *
- * Arguments: @buf *b@ = pointer to a buffer block
- * @uint16 *w@ = where to put the word
- *
- * Returns: Zero if OK, or nonzero if there wasn't a word there.
- *
- * Use: Gets a 16-bit word from a buffer.
- */
-
-int buf_getu16(buf *b, uint16 *w)
-{
- if (BENSURE(b, 2))
- return (-1);
- *w = LOAD16(b->p);
- BSTEP(b, 2);
- return (0);
-}
-
-/* --- @buf_putu16@ --- *
- *
- * Arguments: @buf *b@ = pointer to a buffer block
- * @uint16 w@ = word to write
- *
- * Returns: Zero if OK, nonzero if there wasn't enough space.
- *
- * Use: Puts a 16-but word in a buffer.
- */
-
-int buf_putu16(buf *b, uint16 w)
-{
- if (BENSURE(b, 2))
- return (-1);
- STORE16(b->p, w);
- BSTEP(b, 2);
- return (0);
-}
-
-/* --- @buf_getu32@ --- *
- *
- * Arguments: @buf *b@ = pointer to a buffer block
- * @uint32 *w@ = where to put the word
- *
- * Returns: Zero if OK, or nonzero if there wasn't a word there.
- *
- * Use: Gets a 32-bit word from a buffer.
- */
-
-int buf_getu32(buf *b, uint32 *w)
-{
- if (BENSURE(b, 4))
- return (-1);
- *w = LOAD32(b->p);
- BSTEP(b, 4);
- return (0);
-}
-
-/* --- @buf_putu32@ --- *
- *
- * Arguments: @buf *b@ = pointer to a buffer block
- * @uint32 w@ = word to write
- *
- * Returns: Zero if OK, nonzero if there wasn't enough space.
- *
- * Use: Puts a 32-but word in a buffer.
- */
-
-int buf_putu32(buf *b, uint32 w)
-{
- if (BENSURE(b, 4))
- return (-1);
- STORE32(b->p, w);
- BSTEP(b, 4);
- return (0);
-}
-
-/* --- @buf_getmp@ --- *
- *
- * Arguments: @buf *b@ = pointer to a buffer block
- *
- * Returns: A multiprecision integer, or null if there wasn't one there.
- *
- * Use: Gets a multiprecision integer from a buffer.
- */
-
-mp *buf_getmp(buf *b)
-{
- uint16 sz;
- mp *m;
- if (buf_getu16(b, &sz) || buf_ensure(b, sz))
- return (0);
- m = mp_loadb(MP_NEW, BCUR(b), sz);
- if (mp_octets(m) != sz) {
- mp_drop(m);
- return (0);