---
name: "rbuf_rdonly"
section: "3"
platform: "linux"
package: "libroy-dev"
version: "1.0.8-1"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/rbuf_rdonly"
---

# rbuf\_rdonly(3)

get and set read-write status for an rbuf

## NAME

rbuf\_rdonly, rbuf\_set\_rdonly, rbuf\_set\_rdwr - get and set read-write status for an rbuf

## SYNOPSIS

\#include \<roy.h\>

int rbuf\_rdonly (RBuf \**buf*);

void rbuf\_set\_rdonly (RBuf \**buf*);

void rbuf\_set\_rdwr (RBuf \**buf*);

## DESCRIPTION

If *buf* is set read-only no api call can modify its buffer. An rbuf marked read-only can still be freed. Rbufs created by [*rbuf\_auto*(3)](/rbuf_auto/3.md) and *rbuf\_new\_with\_static*(3) are automaticaly set to read-only and its highly recommened that the programmer not change them to be read-write.

A call to [*rbuf\_rdonly*(3)](/rbuf_rdonly/3.md) will see *buf* is already set read-only.

A call to *rbuf\_set\_rdonly*(3) will set *buf* read-only. This does not mean that *buf* is now static, so a call to [*rbuf\_free*(3)](/rbuf_free/3.md) on *buf* will free *buf*, including its buffer.

A call to *rbuf\_set\_rdwr*(3) will set *buf* read-write. Its highly recommened that programmers do not call this on rbufs created with [*rbuf\_auto*(3)](/rbuf_auto/3.md) or *rbuf\_new\_with\_static*(3).

## RETURN VALUE

A call to [*rbuf\_rdonly*(3)](/rbuf_rdonly/3.md) returns TRUE if *buf* is a read-only rbuf. If *buf* is read-write then this call returns FALSE.

Calls to *rbuf\_set\_rdonly*(3), and *rbuf\_set\_rdwr*(3) return nothing.

## ERRORS

These api calls never fail.

## MACRO

These api calls are implemented using macros.

## SEE ALSO

[*rbuf*(3)](/rbuf/3.md), [*rbuf\_append*(3)](/rbuf_append/3.md),  [*rbuf\_append\_char*(3)](/rbuf_append_char/3.md), [*rbuf\_append\_data*(3)](/rbuf_append_data/3.md),  [*rbuf\_append\_rbuf*(3)](/rbuf_append_rbuf/3.md), [*rbuf\_append\_sprintf*(3)](/rbuf_append_sprintf/3.md),  [*rbuf\_append\_str*(3)](/rbuf_append_str/3.md), [*rbuf\_append\_vsprintf*(3)](/rbuf_append_vsprintf/3.md),  [*rbuf\_auto*(3)](/rbuf_auto/3.md), [*rbuf\_down*(3)](/rbuf_down/3.md),  [*rbuf\_empty*(3)](/rbuf_empty/3.md), [*rbuf\_equal*(3)](/rbuf_equal/3.md),  [*rbuf\_equal\_data*(3)](/rbuf_equal_data/3.md), [*rbuf\_equal\_rbuf*(3)](/rbuf_equal_rbuf/3.md),  [*rbuf\_equal\_rbuf\_len*(3)](/rbuf_equal_rbuf_len/3.md), [*rbuf\_equal\_rbufcase*(3)](/rbuf_equal_rbufcase/3.md),  [*rbuf\_equal\_str*(3)](/rbuf_equal_str/3.md), [*rbuf\_equal\_str\_len*(3)](/rbuf_equal_str_len/3.md),  [*rbuf\_equal\_strcase*(3)](/rbuf_equal_strcase/3.md), [*rbuf\_erase*(3)](/rbuf_erase/3.md),  [*rbuf\_float*(3)](/rbuf_float/3.md), [*rbuf\_free*(3)](/rbuf_free/3.md),  [*rbuf\_hash*(3)](/rbuf_hash/3.md), [*rbuf\_insert*(3)](/rbuf_insert/3.md),  [*rbuf\_last*(3)](/rbuf_last/3.md), [*rbuf\_len*(3)](/rbuf_len/3.md),  [*rbuf\_long*(3)](/rbuf_long/3.md), [*rbuf\_new*(3)](/rbuf_new/3.md),  [*rbuf\_new\_with\_sprintf*(3)](/rbuf_new_with_sprintf/3.md), [*rbuf\_own*(3)](/rbuf_own/3.md),  [*rbuf\_prepend*(3)](/rbuf_prepend/3.md), [*rbuf\_prepend\_char*(3)](/rbuf_prepend_char/3.md),  [*rbuf\_prepend\_data*(3)](/rbuf_prepend_data/3.md), [*rbuf\_prepend\_rbuf*(3)](/rbuf_prepend_rbuf/3.md),  [*rbuf\_prepend\_str*(3)](/rbuf_prepend_str/3.md), [*rbuf\_set\_to*(3)](/rbuf_set_to/3.md),  [*rbuf\_split*(3)](/rbuf_split/3.md), [*rbuf\_sprintf*(3)](/rbuf_sprintf/3.md),  [*rbuf\_str*(3)](/rbuf_str/3.md), [*rbuf\_truncate*(3)](/rbuf_truncate/3.md),  [*rbuf\_up*(3)](/rbuf_up/3.md), [*roy*(3)](/roy/3.md)
