Scroll to navigation

scr_dump(3NCURSES) Library calls scr_dump(3NCURSES)

NAME

scr_dump, scr_restore, scr_init, scr_set - read/write a curses screen from/to a file

SYNOPSIS

#include <ncursesw/curses.h>
int scr_dump(const char * filename);
int scr_restore(const char * filename);
int scr_init(const char * filename);
int scr_set(const char * filename);

DESCRIPTION

curses provides applications the ability to write the contents of the screen to a file and read them back. To read/write a window (rather than the whole screen) from/to a file, use getwin(3NCURSES) and putwin(3NCURSES), respectively.

scr_dump

scr_dump writes to filename the contents of the virtual screen; see curscr(3NCURSES).

scr_restore

scr_restore updates the virtual screen to match the contents of filename (if validly written with scr_dump). curses does not perform a refresh; after making any desired changes, call doupdate(3NCURSES) or similar.

scr_init

scr_init reads filename, using it to initialize curses data structures describing the state of the terminal screen. curses then, if it decides the terminal state is valid, bases its next update of the screen on this information rather than clearing it and starting from scratch.

curses regards the terminal being in an invalid state for computation of updates based on the contents of filename if

  • the terminal type supports the terminfo capabilities exit_ca_mode (rmcup) or non_rev_rmcup (nrrmc), or
  • curses knows that the terminal has been written to since the preceding scr_dump call.

Either of the foregoing conditions means that curses cannot assume that the terminal's contents match their representation in filename. The former is due to terminal features (such as xterm(1)'s “alternate screen”) that couple cursor-positioning mode with a local cache of screen contents. curses cannot know whether terminal is displaying from that local cache at the time the application calls scr_init, so it makes a pessimistic assumption that a full redraw is required; see subsection “Cursor Motions” of terminfo(5).

scr_init could be used after initscr(3NCURSES) or system(3) to share the screen with another process that has done a scr_dump after endwin(3NCURSES). An application that supports suspending its state on exit and subsequent resumption upon later execution might use scr_dump and scr_init thus.

scr_set

scr_set combines scr_restore and scr_init, synchronizing the contents of filename with the virtual screen. It can be regarded as a screen inheritance function; consider a real-time screen-sharing application.

RETURN VALUE

These functions return OK on success and ERR on failure.

In ncurses, each function returns ERR if it cannot open filename. scr_init, scr_restore, and scr_set return ERR if the contents of filename are invalid.

NOTES

scr_init, scr_restore, and scr_set may be implemented as macros.

PORTABILITY

X/Open Curses, Issue 4 describes these functions. It specifies no error conditions for them.

SVr4 omitted the const qualifiers.

SVr4 documentation describes scr_init such that the dump data is also considered invalid “if the time-stamp of the tty is old” but does not define “old”.

HISTORY

SVr3 (1987) introduced scr_dump, scr_init, and scr_restore. SVr3.1 added scr_set.

SEE ALSO

ncurses(3NCURSES), initscr(3NCURSES), refresh(3NCURSES), util(3NCURSES), system(3), scr_dump(5), terminfo(5)

2024-06-01 ncurses 6.5