---
name: "buffer_get_token_pred"
section: "3diet"
platform: "linux"
package: "libowfat-dev"
version: "0.28-2"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/buffer_get_token_pred/3diet"
---

# buffer\_get\_token\_pred(3diet)

read token from buffer

## NAME

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

## SYNTAX

**#include \<buffer.h\>**

ssize\_t **buffer\_get\_token\_pred**(buffer\* *b*,char\* *x*,size\_t *len*,\
                  int (\**predicate*)(const char\* *s*,size\_t *len*));

## DESCRIPTION

buffer\_get\_token\_pred copies data from *b* to *x*\[0\], *x*\[1\], ..., *x*\[*len*-1\] until *len* bytes have been read or *predicate* called on the destination string returns nonzero.

*predicate* can also return 0 (indicating further input is required to complete the token) or -1 (abort and return -1; use this if *predicate* wants to enfore a maximum message size or does timeout handling or detects a malformed message).

buffer\_get\_token\_pred returns the number of bytes copied or -1 on error (setting *errno* appropriately).

## SEE ALSO

[buffer\_init(3)](/buffer_init/3.md), [buffer\_feed(3)](/buffer_feed/3.md), [buffer\_peek(3)](/buffer_peek/3.md), [buffer\_seek(3)](/buffer_seek/3.md), [buffer(3)](/buffer/3.md)
