ndbuf_read_raw refined

This commit is contained in:
Alexander Vdolainen 2025-10-10 00:00:14 +03:00
parent b1d0950b71
commit 1f684819a4

View File

@ -1,65 +1,92 @@
.TH NDBUF_READ_RAW 3 "15 September 2018" "NDBUF" "Binary buffers lib manual" .TH NDBUF_READ_RAW 3 "15 September 2018" "NDBUF" "Binary buffers lib manual"
.SH NAME .SH NAME
ndbuf_read_u8 \- Read unsigned 8 bit value from buffer ndbuf_read_u8, ndbuf_read_u16, ndbuf_read_u32, ndbuf_read_u64,
.br ndbuf_read_raw - read data of specified length and type
ndbuf_read_u16 \- Read unsigned 16 bit value from buffer
.br
ndbuf_read_u32 \- Read unsigned 32 bit value from buffer
.br
ndbuf_read_u64 \- Read unsigned 64 bit value from buffer
.br
ndbuf_read_raw \- Read raw data with pointed length
.br
.SH SYNOPSIS .SH SYNOPSIS
.B #include <ndbuf/ndbuf.h> .B "#include <ndbuf/ndbuf.h>"
.sp .PP
uint32_t ndbuf_read_u8(ndbuf_t *, uint8_t *); .nf
uint32_t ndbuf_read_u8(ndbuf_t *b, uint8_t *val);
uint32_t ndbuf_read_u16(ndbuf_t *, uint16_t *); uint32_t ndbuf_read_u16(ndbuf_t *b, uint16_t *val);
uint32_t ndbuf_read_u32(ndbuf_t *b, uint32_t *val);
uint32_t ndbuf_read_u32(ndbuf_t *, uint32_t *); uint32_t ndbuf_read_u64(ndbuf_t *b, uint64_t *val);
uint32_t ndbuf_read_raw(ndbuf_t *b, void *dst, uint32_t len);
uint32_t ndbuf_read_u64(ndbuf_t *, uint64_t *); .fi
uint32_t ndbuf_read_raw(ndbuf_t *, void *, uint32_t);
.br
.sp
.SH DESCRIPTION .SH DESCRIPTION
Those functions reads a data from the The ndbuf_read_ family copies data from an
.B ndbuf_t .B ndbuf_t
structure. Returns amount of bytes ridden or 0 in case of error. instance into caller-provided storage. On success each function returns the number of bytes read; on error it returns 0.
.br
.B ndbuf_read_u8 .TP
, .B ndbuf_read_u8(ndbuf_t *b, uint8_t *val)
.B ndbuf_read_u16 Read one unsigned 8bit value from the current buffer position into
, .I val
.B ndbuf_read_u32 and advance the buffer cursor by one byte. Returned value is the number of bytes read (1) or 0 on error.
,
.B ndbuf_read_u64 .TP
functions copies an integer values from .B ndbuf_read_u16(ndbuf_t *b, uint16_t *val)
.B ndbuf_t Read one unsigned 16bit value, store it into
structure to the second function argument. .I val
.br and advance the cursor by two bytes. Returns 2 on success or 0 on error.
.B ndbuf_read_raw
function copies raw data from .TP
.B ndbuf_t .B ndbuf_read_u32(ndbuf_t *b, uint32_t *val)
structure to the second argument with provided length in the third argument. Memory of appropriate length should be preallocated at the given pointer. Read one unsigned 32bit value, store into
.br .I val
.SH BUGS and advance the cursor by four bytes. Returns 4 on success or 0 on error.
Not known yet.
.SH EXAMPLE .TP
None. .B ndbuf_read_u64(ndbuf_t *b, uint64_t *val)
.SH APPLICATION USAGE Read one unsigned 64bit value, store into
None. .I val
and advance the cursor by eight bytes. Returns 8 on success or 0 on error.
.TP
.B ndbuf_read_raw(ndbuf_t *b, void *dst, uint32_t len)
Copy
.I len
bytes of raw data from the buffer to
.I dst
and advance the cursor by
.I len. The caller must ensure
.I dst
points to memory at least
.I len
bytes long. Returns the number of bytes copied or 0 on error.
.SH RETURN VALUE
On success each function returns the number of bytes read. On error they return 0; no specific
.I errno
value is set.
.SH ERRORS
Functions return 0 when the requested read would exceed the available data, when
.I b
is NULL, or on other internal errors. Callers must validate the return value before using output data.
.SH RATIONALE .SH RATIONALE
This family of functions might be used when the copy of the data is required, otherwise use Use these functions when you need a local copy of numeric or raw data. For zero-copy parsing or formatted
.B ndbuf_escan extraction consider the
family of functions. .BR ndbuf_escan(3)
family instead.
.SH EXAMPLES
.PP
.nf
/* Read values from buffer */
uint8_t a8;
uint16_t a16;
uint32_t a32;
if (ndbuf_read_u8(b, &a8) != 1) { /* handle error */ }
if (ndbuf_read_u16(b, &a16) != 2) { /* handle error */ }
if (ndbuf_read_u32(b, &a32) != 4) { /* handle error */ }
/* Read raw payload */
char payload[128];
if (ndbuf_read_raw(b, payload, sizeof(payload)) != sizeof(payload)) { /* handle error */ }
.fi
.SH SEE ALSO .SH SEE ALSO
.BI ndbuf_write_raw(3), ndbuf_escan(3) .BR ndbuf_write_raw(3),
.BR ndbuf_escan(3)
.SH COPYRIGHT .SH COPYRIGHT
This software licensed under GNU LGPL v2.1 or later. See COPYING for further details. This software licensed under GNU LGPL v2.1 or later. See COPYING for further details.
.br .PP
(c) Authors of libndbuf 2017-2018 <http://vapaa.xyz> (c) Authors of libndbuf 2017-2018 <http://vapaa.xyz>
.SH AUTHOR .SH AUTHOR
Alexander Vdolainen (alex@vapaa.xyz) Alexander Vdolainen (alex@vapaa.xyz)