---
name: "curs_scr_dmp"
section: "3x"
platform: "linux"
package: "ncurses3.4-dev"
version: "1.9.9g-8.10"
release: "Debian 2.0 (Hamm)"
platforms: ["linux"]
url: "https://new.carta.tech/curs_scr_dmp"
---

# curs\_scr\_dmp(3x)

read (write) a curses screen from (to) a file

## NAME

**scr\_dump**, **scr\_restore**, **scr\_init**, **scr\_set** - read (write) a **curses** screen from (to) a file

## SYNOPSIS

**#include \<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

The **scr\_dump** routine dumps the current contents of the virtual screen to the file *filename*.

The **scr\_restore** routine sets the virtual screen to the contents of *filename*, which must have been written using **scr\_dump**.  The next call to **doupdate** restores the screen to the way it looked in the dump file.

The **scr\_init** routine reads in the contents of *filename* and uses them to initialize the **curses** data structures about what the terminal currently has on its screen.  If the data is determined to be valid, **curses** bases its next update of the screen on this information rather than clearing the screen and starting from scratch.  **scr\_init** is used after **initscr** or a **system** \[see **system**(BA\_LIB)\] call to share the screen with another process which has done a **scr\_dump** after its **endwin** call.  The data is declared invalid if the terminfo capabilities **rmcup** and **nrrmc** exist; also if the terminal has been written to since the preceding **scr\_dump** call.

The **scr\_set** routine is a combination of **scr\_restore** and **scr\_init**.  It tells the program that the information in *filename* is what is currently on the screen, and also what the program wants on the screen. This can be thought of as a screen inheritance function.

To read (write) a window from (to) a file, use the **getwin** and **putwin** routines \[see **util**(3ncurses)\].

## RETURN VALUE

All routines return the integer **ERR** upon failure and **OK** upon success.

## NOTES

Note that **scr\_init**, **scr\_set**, and **scr\_restore** may be macros.

## PORTABILITY

The XSI Curses standard, Issue 4, describes these functions (adding the const qualifiers).

The SVr4 docs merely say under **scr\_init** that the dump data is also considered invalid "if the time-stamp of the tty is old" but don't define "old".

## SEE ALSO

**ncurses**(3ncurses), **initscr**(3ncurses), **refresh**(3ncurses), **util**(3ncurses), [**system**(3)](/system/3.md)
