---
name: "field_buffer"
section: "3form"
platform: "linux"
package: "ncurses-doc"
version: "6.5+20250216-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/field_buffer/3form"
---

# field\_buffer(3form)

field buffer control

## NAME

**form\_field\_buffer** - field buffer control

## SYNOPSIS

```
#include <form.h>
```

**int set\_field\_buffer(FIELD \****field***, int** *buf***, const char \****value***);** **char \*field\_buffer(const FIELD \****field***, int** *buffer***);**

**int set\_field\_status(FIELD \****field***, bool** *status***);** **bool field\_status(const FIELD \****field***);**

**int set\_max\_field(FIELD \****field***, int** *max***);**

## DESCRIPTION

**The function set\_field\_buffer sets the numbered buffer of the given field** **to contain a given string:**

- •

  **Buffer 0 is the displayed value of the field.**

- •

  **Other numbered buffers may be allocated by applications through the nbuf** **argument of (see field\_new(3FORM))** **but are not manipulated by the forms library.**

**The function field\_buffer returns a pointer to** **the contents of the given numbered buffer:**

- •

  **The buffer contents always have the same length,** **and are padded with trailing spaces** **as needed to ensure this length is the same.**

- •

  **The buffer may contain leading spaces, depending on how it was set.**

- •

  **The buffer contents are set with set\_field\_buffer,** **or as a side effect of any editing operations on the corresponding field.**

- •

  **Editing operations are based on the** *window* **which displays the field,** **rather than a** *string***.** **The window contains only printable characters, and is filled with blanks.** **If you want the raw data, you must write your** **own routine that copies the value out of the buffer and removes the leading** **and trailing spaces.**

- •

  **Because editing operations change the content of the buffer to** **correspond to the window, you should not rely on using buffers** **for long-term storage of form data.**

**The function set\_field\_status sets the associated status flag of** *field***; field\_status gets the current value.** **The status flag** **is set to a nonzero value whenever the field changes.**

**The function set\_max\_field sets the maximum size for a dynamic field.** **An argument of 0 turns off any maximum size threshold for that field.**

## RETURN VALUE

**The field\_buffer function returns** *NULL* **on error.** **It sets errno according to their success:**

- **E\_OK**

  **The routine succeeded.**

- **E\_BAD\_ARGUMENT**

  **Routine detected an incorrect or out-of-range argument.**

**The field\_status function returns TRUE or FALSE.**

**The remaining routines return one of the following:**

- **E\_OK**

  **The routine succeeded.**

- **E\_SYSTEM\_ERROR**

  **System error occurred (see [errno(3)](/errno/3.md)).**

- **E\_BAD\_ARGUMENT**

  **Routine detected an incorrect or out-of-range argument.**

## NOTES

**When configured for wide characters, field\_buffer returns a pointer** **to temporary storage (allocated and freed by the library).** **The application should not attempt to modify the data.** **It will be freed on the next call to field\_buffer to return the** **same buffer.**

## PORTABILITY

**These routines emulate the System V forms library.** **They were not supported on** **Version 7 or BSD versions.**

**The set\_max\_field function checks for an** *ncurses* **extension** **O\_INPUT\_FIELD which allows a dynamic field to shrink if the new** **limit is smaller than the current field size.**

## AUTHORS

**Juergen Pfeifer.** **Manual pages and adaptation for new curses by Eric S. Raymond.**

## SEE ALSO

**ncurses(3NCURSES) and related pages whose names begin “form\_”** **for detailed descriptions of the entry points.**
