| .\"*************************************************************************** |
| .\" Copyright 2018-2023,2024 Thomas E. Dickey * |
| .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * |
| .\" * |
| .\" Permission is hereby granted, free of charge, to any person obtaining a * |
| .\" copy of this software and associated documentation files (the * |
| .\" "Software"), to deal in the Software without restriction, including * |
| .\" without limitation the rights to use, copy, modify, merge, publish, * |
| .\" distribute, distribute with modifications, sublicense, and/or sell * |
| .\" copies of the Software, and to permit persons to whom the Software is * |
| .\" furnished to do so, subject to the following conditions: * |
| .\" * |
| .\" The above copyright notice and this permission notice shall be included * |
| .\" in all copies or substantial portions of the Software. * |
| .\" * |
| .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * |
| .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * |
| .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * |
| .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * |
| .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * |
| .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * |
| .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * |
| .\" * |
| .\" Except as contained in this notice, the name(s) of the above copyright * |
| .\" holders shall not be used in advertising or otherwise to promote the * |
| .\" sale, use or other dealings in this Software without prior written * |
| .\" authorization. * |
| .\"*************************************************************************** |
| .\" |
| .\" $Id: curs_scr_dump.3x,v 1.43 2024/04/20 18:54:36 tom Exp $ |
| .TH curs_scr_dump 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" |
| .ie \n(.g \{\ |
| .ds `` \(lq |
| .ds '' \(rq |
| .\} |
| .el \{\ |
| .ie t .ds `` `` |
| .el .ds `` "" |
| .ie t .ds '' '' |
| .el .ds '' "" |
| .\} |
| . |
| .de bP |
| .ie n .IP \(bu 4 |
| .el .IP \(bu 2 |
| .. |
| .SH NAME |
| \fB\%scr_dump\fP, |
| \fB\%scr_restore\fP, |
| \fB\%scr_init\fP, |
| \fB\%scr_set\fP \- |
| read/write a \fIcurses\fR screen from/to a file |
| .SH SYNOPSIS |
| .nf |
| \fB#include <curses.h> |
| .PP |
| \fBint scr_dump(const char *\fIfilename\fP); |
| \fBint scr_restore(const char *\fIfilename\fP); |
| \fBint scr_init(const char *\fIfilename\fP); |
| \fBint scr_set(const char *\fIfilename\fP); |
| .fi |
| .SH DESCRIPTION |
| .I 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 \fB\%getwin\fP(3X) and |
| \fB\%putwin\fP(3X), |
| respectively. |
| .SS scr_dump |
| \fB\%scr_dump\fP writes to |
| .I filename |
| the contents of the virtual screen; |
| see \fB\%curscr\fP(3X). |
| .SS scr_restore |
| \fB\%scr_restore\fP updates the virtual screen to contain the contents |
| of |
| .I filename |
| (if it was validly written with \fB\%scr_dump\fP). |
| No refresh is performed; |
| after performing any further desired updates, |
| call \fB\%doupdate\fP(3X) or similar. |
| .SS scr_init |
| \fB\%scr_init\fP reads |
| .IR filename , |
| using it to initialize |
| .I curses |
| data structures describing the state of the terminal screen. |
| If these data are valid, |
| .I curses |
| bases its next update of the screen on this information rather than |
| clearing it and starting from scratch. |
| .PP |
| The data fail the validity check |
| .bP |
| if the terminal employs |
| .I \%term\%info |
| capabilities |
| .B \%exit_ca_mode |
| .RB ( \%rmcup ) |
| or |
| .B \%non_rev_rmcup |
| .RB ( \%nrrmc ) |
| are defined, |
| or |
| .bP |
| if |
| .I curses |
| knows that the terminal has been written to since the preceding |
| \fB\%scr_dump\fP call. |
| .PP |
| \fB\%scr_init\fP could be used after \fB\%initscr\fP(3X) or |
| \fB\%system\fP(3) to share the screen with another process that has |
| done a \fBscr_dump\fP after \fB\%endwin\fP(3X). |
| .SS scr_set |
| The \fBscr_set\fP routine is a combination of \fBscr_restore\fP and |
| \fBscr_init\fP. It tells the program that the information in \fIfilename\fP 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. |
| .SH RETURN VALUE |
| These functions return \fBOK\fP on success and \fBERR\fP on failure. |
| .PP |
| X/Open defines no failure conditions. |
| In this implementation, |
| each function fails if it cannot open |
| .IR filename . |
| .SH NOTES |
| \fB\%scr_init\fP, |
| \fB\%scr_set\fP, |
| and |
| \fB\%scr_restore\fP may be macros. |
| .SH PORTABILITY |
| X/Open Curses, |
| Issue 4 describes these functions. |
| .PP |
| .\" SVID 4, p. 529 |
| SVr4 omitted the |
| .I \%const |
| qualifiers. |
| .PP |
| SVr4 documentation describes \fB\%scr_init\fP such that the dump data is |
| also considered invalid \*(``if the time-stamp of the tty is old\*('' |
| but does not define \*(``old\*(''. |
| .SH SEE ALSO |
| \fB\%curses\fP(3X), |
| \fB\%curs_initscr\fP(3X), |
| \fB\%curs_refresh\fP(3X), |
| \fB\%curs_util\fP(3X), |
| \fB\%system\fP(3), |
| \fB\%scr_dump\fP(5) |