---
name: "field_opts"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/field_opts"
---

# field\_opts(3)

set and get field options

## NAME

**set\_field\_opts**, **field\_opts\_on**, **field\_opts\_off**, **field\_opts** - set and get field options

## SYNOPSIS

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

**int set\_field\_opts(FIELD \****field***, Field\_Options** *opts***);** **Field\_Options field\_opts(const FIELD \****field***);**

**int field\_opts\_on(FIELD \****field***, Field\_Options** *opts***);** **int field\_opts\_off(FIELD \****field***, Field\_Options** *opts***);**

## DESCRIPTION

**The function set\_field\_opts sets all the given field's option bits** **(field option bits may be logically “or”-ed together).**

**The function field\_opts\_on turns on the given option bits, and leaves** **others alone.**

**The function field\_opts\_off turns off the given option bits, and leaves** **others alone.**

**The function field\_opts returns the field's current option bits.**

**The following standard options are defined (all are on by default):**

- **O\_ACTIVE**

  **The field is visited during processing.** **If this option is off, the field will** **not be reachable by navigation keys.** **Please notice that an invisible field** **appears to be inactive also.**

- **O\_AUTOSKIP**

  **Skip to the next field when this one fills.**

- **O\_BLANK**

  **The field is cleared whenever a character is entered at the first position.**

- **O\_EDIT**

  **The field can be edited.**

- **O\_NULLOK**

  **Allow a blank field.**

- **O\_PASSOK**

  **Validate field only if modified by user.**

- **O\_PUBLIC**

  **The field contents are displayed as data is entered.**

- **O\_STATIC**

  **Field buffers are fixed to field's original size.** **Turn this option off to create a dynamic field.**

- **O\_VISIBLE**

  **The field is displayed.** **If this option is off, display of the field is** **suppressed.**

- **O\_WRAP**

  **Words that do not fit on a line are wrapped to the next line.** **Words are** **blank-separated.**

**These extension options are defined (extensions are off by default):**

- **O\_DYNAMIC\_JUSTIFY**

  **Permit dynamic fields to be justified, like static fields.**

- **O\_NO\_LEFT\_STRIP**

  **Preserve leading whitespace in the field buffer, which is normally discarded.**

- **O\_EDGE\_INSERT\_STAY**

  **When inserting into a field up to the boundary position,** **optionally delay the scrolling,** **so that the last inserted character remains visible,** **but advance the cursor to reflect the insertion.** **This allows the form library to display the** **inserted character in one-character fields** **as well as allowing the library to maintain consistent state.**

- **O\_INPUT\_FIELD**

  **The set\_max\_field function checks for this extension,** **which allows a dynamic field to shrink if the new** **limit is smaller than the current field size.**

## RETURN VALUE

**Except for field\_opts, each routine returns one of the following:**

- **E\_OK**

  **The routine succeeded.**

- **E\_BAD\_ARGUMENT**

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

- **E\_CURRENT**

  **The field is the current field.**

- **E\_SYSTEM\_ERROR**

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

## PORTABILITY

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

## AUTHORS

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

## SEE ALSO

**curses(3X),** **form(3X),** **form\_field\_just(3X)**
