# form_field_buffer

## 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 **form_field_new**(3X)) 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)).
    
           **E_BAD_ARGUMENT**
                Routine detected an incorrect or out-of-range argument.
    


## NOTES



           The header file **< form.h> **automatically includes the header file
    
           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.
           **< curses.h>**.
    


## 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.
    


* * *