---
name: "buffer_get_token_sa"
section: "3"
platform: "linux"
package: "libowfat-dev"
version: "0.32-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/buffer_get_token_sa"
---

# buffer\_get\_token\_sa(3)

read token from buffer

## NAME

buffer\_get\_token\_sa - read token from buffer

## SYNTAX

```
#include <libowfat/stralloc.h>
#include <libowfat/buffer.h>
int buffer_get_token_sa(buffer* b,stralloc* sa,
                    const char* charset,size_t setlen);
```

## DESCRIPTION

buffer\_get\_token\_sa appends data from the *b* to *sa* until one of the delimiters in *charset* is found, NOT overwriting the previous content of *sa*.  That delimiter is also appended to *sa*.

If reading from the buffer or allocating memory fails, buffer\_get\_token\_sa returns -1 and sets *errno* appropriately.  At that point *sa* may already contain a partial token.

## RETURN VALUE

\-1 on error (setting errno), 0 on EOF, 1 when successful.

## RATIONALE

buffer\_get\_token\_sa appends instead of overwriting so it can be used on non-blocking sockets (these signal error and set *errno* to EAGAIN; in this case you can simply call buffer\_get\_token\_sa again when **select** or **poll** indicate more data is available).

## SEE ALSO

[buffer\_getline\_sa(3)](/buffer_getline_sa/3.md), [buffer\_get\_token(3)](/buffer_get_token/3.md), [buffer(3)](/buffer/3.md)
