]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/scr_dump.5.html
ncurses 6.5 - patch 20240504
[ncurses.git] / doc / html / man / scr_dump.5.html
index e01ea35ad4d67fc602d4978b8b70c6c8e112fe8e..a96342558ecb98e56c235550d18154b61e054ff8 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2017 Free Software Foundation, Inc.                            *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: scr_dump.5,v 1.17 2021/06/17 21:26:02 tom Exp @
+  * @Id: scr_dump.5,v 1.46 2024/03/23 20:42:29 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>scr_dump 5</TITLE>
+<TITLE>scr_dump 5 2024-03-23 ncurses 6.5 File formats</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
 </HEAD>
 <BODY>
-<H1 class="no-header">scr_dump 5</H1>
+<H1 class="no-header">scr_dump 5 2024-03-23 ncurses 6.5 File formats</H1>
 <PRE>
-<STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>                   File Formats Manual                  <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
+<STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>                      File formats                      <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       scr_dump - format of curses screen-dumps.
-
-
-</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>scr_dump</STRONG>
+       scr_dump - <EM>curses</EM> screen dump
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        <STRONG>o</STRONG>   The ncurses6 <STRONG>getwin</STRONG> reads the legacy screen dumps from ncurses5.
 
 
-</PRE><H3><a name="h3-ncurses5-_legacy_">ncurses5 (legacy)</a></H3><PRE>
-       The screen-dump feature was added to ncurses in June 1995.  While there
+</PRE><H3><a name="h3-ncurses5-_Legacy_">ncurses5 (Legacy)</a></H3><PRE>
+       The screen-dump feature was added to <EM>ncurses</EM> in June 1995.  While there
        were fixes and improvements in succeeding years, the basic  scheme  was
        unchanged:
 
-       <STRONG>o</STRONG>   The <STRONG>WINDOW</STRONG> structure was written in binary form.
+       <STRONG>o</STRONG>   The <EM>WINDOW</EM> structure was written in binary form.
 
-       <STRONG>o</STRONG>   The <STRONG>WINDOW</STRONG> structure refers to lines of data, which were written as
-           an array of binary data following the <STRONG>WINDOW</STRONG>.
+       <STRONG>o</STRONG>   The <EM>WINDOW</EM> structure refers to lines of data, which were written as
+           an array of binary data following the <EM>WINDOW</EM>.
 
        <STRONG>o</STRONG>   When <STRONG>getwin</STRONG> restored the window, it would  keep  track  of  offsets
-           into  the  array of line-data and adjust the <STRONG>WINDOW</STRONG> structure which
+           into  the  array of line-data and adjust the <EM>WINDOW</EM> structure which
            was read back into memory.
 
-       This is similar to Unix SystemV, but does not write a "magic number" to
-       identify the file format.
+       This is similar to Unix System V, but does not write a  "magic  number"
+       to identify the file format.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       There  is  no  standard  format for <STRONG>putwin</STRONG>.  This section gives a brief
-       description of the existing formats.
+       There is no standard format for <EM>curses</EM> screen dumps.  A brief survey of
+       the existing implementations follows.
 
 
 </PRE><H3><a name="h3-X_Open-Curses">X/Open Curses</a></H3><PRE>
-       Refer to <EM>X/Open</EM> <EM>Curses,</EM> <EM>Issue</EM> <EM>7</EM> (2009).
-
-       X/Open's documentation for <EM>enhanced</EM> <EM>curses</EM> says only:
+       X/Open Curses, Issue 7 specifies little.  It  says  (boldface  emphasis
+       added)
 
-          The <EM>getwin(</EM> <EM>)</EM> function reads window-related data stored in the  file
-          by  <EM>putwin(</EM> <EM>)</EM>.   The  function  then  creates  and initializes a new
+          "[t]he  <EM>getwin()</EM>  function  reads  window-related data stored in the
+          file by <EM>putwin()</EM>.  The function then creates and initializes  a  new
           window using that data.
 
-          The <EM>putwin(</EM> <EM>)</EM> function writes all data associated with <EM>win</EM> into  the
-          <EM>stdio</EM>  stream  to  which  <EM>filep</EM> points, using an <STRONG>unspecified</STRONG> <STRONG>format</STRONG>.
-          This information can be retrieved later using <EM>getwin(</EM> <EM>)</EM>.
+          The  <EM>putwin()</EM>  function writes all data associated with <EM>win</EM> into the
+          <EM>stdio</EM> stream to which <EM>filep</EM> points,  using  an  <STRONG>unspecified</STRONG>  <STRONG>format</STRONG>.
+          This information can be retrieved later using <EM>getwin()</EM>."
 
-       In the mid-1990s when the X/Open Curses  document  was  written,  there
-       were  still  systems  using older, less capable curses libraries (aside
-       from the BSD curses library which was not relevant to X/Open because it
-       did not meet the criteria for <EM>base</EM> <EM>curses</EM>).  The document explained the
-       term "enhanced" as follows:
+       In  the  mid-1990s  when  the X/Open Curses document was written, there
+       were still System V systems using older, less capable <EM>curses</EM> libraries.
+       BSD  <EM>curses</EM>  was  not  relevant  to  X/Open because it did not meet the
+       criteria for base-level conformance; see <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
 
-          <STRONG>o</STRONG>   Shading is used to identify  <EM>X/Open</EM>  <EM>Enhanced</EM>  <EM>Curses</EM>  material,
-              relating to interfaces included to provide enhanced capabilities
-              for applications originally written to be  compiled  on  systems
-              based  on  the  UNIX  operating system.  Therefore, the features
-              described may not be present on systems that conform to <STRONG>XPG4</STRONG>  <STRONG>or</STRONG>
-              <STRONG>to</STRONG>  <STRONG>earlier</STRONG>  <STRONG>XPG</STRONG>  <STRONG>releases</STRONG>.   The  relevant  reference pages may
-              provide additional or more specific portability  warnings  about
-              use of the material.
 
-       In  the foregoing, emphasis was added to <STRONG>unspecified</STRONG> <STRONG>format</STRONG> and to <STRONG>XPG4</STRONG>
-       <STRONG>or</STRONG> <STRONG>to</STRONG> <STRONG>earlier</STRONG> <STRONG>XPG</STRONG> <STRONG>releases</STRONG>, for clarity.
+</PRE><H3><a name="h3-System-V">System V</a></H3><PRE>
+       System V <EM>curses</EM> identified the file format by writing a "magic  number"
+       at  the  beginning  of the dump.  The <EM>WINDOW</EM> data and the lines of text
+       follow, all in binary form.
 
-
-</PRE><H3><a name="h3-Unix-SystemV">Unix SystemV</a></H3><PRE>
-       Unix SystemV curses identified the file  format  by  writing  a  "magic
-       number" at the beginning of the dump.  The <STRONG>WINDOW</STRONG> data and the lines of
-       text follow, all in binary form.
-
-       The Solaris curses source has these definitions:
+       Solaris <EM>curses</EM> has the following definitions.
 
            /* terminfo magic number */
            #define MAGNUM  0432
            #define SVR3_DUMP_MAGIC_NUMBER  0434
 
        That is, the feature was likely introduced in SVr2 (1984), and improved
-       in SVr3 (1987).  The Solaris curses source has no magic number for SVr4
-       (1989).  Other operating systems (AIX and  HPUX)  use  a  magic  number
-       which would correspond to this definition:
+       in  SVr3  (1987).   Solaris <EM>curses</EM> has no magic number for SVr4 (1989).
+       Other System V operating systems (AIX and HP-UX)  use  a  magic  number
+       that would correspond to the following.
 
            /* curses screen dump magic number */
            #define SVR4_DUMP_MAGIC_NUMBER  0435
 
-       That  octal number in bytes is 001, 035.  Because most Unix vendors use
-       big-endian hardware, the magic number is written  with  the  high-order
-       byte first, e.g.,
+       That  octal  number in bytes is 001, 035.  Because most Unix vendors at
+       the time used big-endian hardware, the magic number is written with the
+       high-order byte first.
 
-            01 35
+           \001\035
 
-       After  the magic number, the <STRONG>WINDOW</STRONG> structure and line-data are written
-       in binary format.  While the magic number used by the Unix systems  can
-       be seen using <STRONG>od(1)</STRONG>, none of the Unix systems documents the format used
-       for screen-dumps.
+       After  the magic number, the <EM>WINDOW</EM> structure and line data are written
+       in binary format.  While the magic number used by these systems can  be
+       observed  with <STRONG>od(1)</STRONG>, none of them documents the format used for screen
+       dumps.
 
-       The Unix systems  do  not  use  identical  formats.   While  collecting
-       information  for  for  this  manual  page,  the <EM>savescreen</EM> test-program
-       produced dumps of different size (all  on  64-bit  hardware,  on  40x80
-       screens):
+       Nor do they use an identical format, even  with  the  System V  family.
+       The <EM>ncurses</EM> <EM>savescreen</EM> test program was used to collect information for
+       this manual page.  It produced dumps of different size (all  on  64-bit
+       hardware, on 40x80 screens):
 
        <STRONG>o</STRONG>   AIX (51817 bytes)
 
-       <STRONG>o</STRONG>   HPUX (90093 bytes)
+       <STRONG>o</STRONG>   HP-UX (90093 bytes)
 
        <STRONG>o</STRONG>   Solaris 10 (13273 bytes)
 
-       <STRONG>o</STRONG>   ncurses5 (12888 bytes)
+       <STRONG>o</STRONG>   <EM>ncurses</EM>5 (12888 bytes)
 
 
 </PRE><H3><a name="h3-Solaris">Solaris</a></H3><PRE>
-       As  noted  above,  Solaris  curses has no magic number corresponding to
-       SVr4 curses.  This is odd since Solaris was the first operating  system
-       to pass the SVr4 guidelines.  Solaris has two versions of curses:
+       As  noted  above,  Solaris  <EM>curses</EM> has no magic number corresponding to
+       SVr4 <EM>curses</EM>.  This is odd, since Solaris was the first operating system
+       to meet the SVr4 guidelines.  Solaris furthermore supplies two versions
+       of <EM>curses</EM>.
 
-       <STRONG>o</STRONG>   The default curses library uses the SVr3 magic number.
+       <STRONG>o</STRONG>   The default <EM>curses</EM> library uses the SVr3 magic number.
 
-       <STRONG>o</STRONG>   There  is  an  alternate  curses library in <STRONG>/usr/xpg4</STRONG>.  This uses a
-           textual format with no magic number.
+       <STRONG>o</STRONG>   An alternate <EM>curses</EM> library (which we term <EM>xcurses),</EM>  available  in
+           <EM>/usr/xpg4</EM>, uses a textual format with no magic number.
 
-           According to the copyright notice, the <EM>xpg4</EM> Solaris curses  library
-           was developed by MKS (Mortice Kern Systems) from 1990 to 1995.
+           According  to  its  copyright  notice,  this  <EM>xcurses</EM>  library  was
+           developed by MKS (Mortice Kern Systems) from 1990 to 1995.
 
-           Like  ncurses6,  there  is  a  file-header with parameters.  Unlike
-           ncurses6, the contents of the window are  written  piecemeal,  with
-           coordinates  and  attributes  for  each  chunk  of text rather than
+           Like ncurses6,  it  includes  a  header  with  parameters.   Unlike
+           ncurses6,  the  contents  of the window are written piecemeal, with
+           coordinates and attributes for  each  chunk  of  text  rather  than
            writing the whole window from top to bottom.
 
 
 </PRE><H3><a name="h3-PDCurses">PDCurses</a></H3><PRE>
-       PDCurses added support for screen dumps in version  2.7  (2005).   Like
-       Unix  SystemV  and  ncurses5, it writes the <STRONG>WINDOW</STRONG> structure in binary,
-       but begins the file with its three-byte identifier "PDC", followed by a
-       one-byte version, e.g.,
+       <EM>PDCurses</EM>  added  support  for screen dumps in version 2.7 (2005).  Like
+       System V and ncurses5, it writes the <EM>WINDOW</EM> structure  in  binary,  but
+       begins  the  file  with  its three-byte identifier "PDC", followed by a
+       single-byte version number.
 
                 "PDC\001"
 
 
 </PRE><H3><a name="h3-NetBSD">NetBSD</a></H3><PRE>
-       As  of  April  2017,  NetBSD  curses  does  not  support  <STRONG>scr_dump</STRONG>  and
+       As  of  April  2017,  NetBSD  <EM>curses</EM>  does  not  support  <STRONG>scr_dump</STRONG>  and
        <STRONG>scr_restore</STRONG> (or <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>), although it has <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG>.
 
-       Like ncurses5, NetBSD <STRONG>putwin</STRONG> does not identify its dumps with a  useful
+       Like  ncurses5, NetBSD <STRONG>putwin</STRONG> does not identify its dumps with a useful
        magic number.  It writes
 
-       <STRONG>o</STRONG>   the curses shared library major and minor versions as the first two
-           bytes (e.g., 7 and 1),
+       <STRONG>o</STRONG>   the <EM>curses</EM> shared library major and minor versions as the first two
+           bytes (for example, 7 and 1),
 
-       <STRONG>o</STRONG>   followed by a binary dump of the <STRONG>WINDOW</STRONG>,
+       <STRONG>o</STRONG>   followed by a binary dump of the <EM>WINDOW</EM>,
 
-       <STRONG>o</STRONG>   some data for wide-characters referenced by the  <STRONG>WINDOW</STRONG>  structure,
+       <STRONG>o</STRONG>   some  data  for wide characters referenced by the <EM>WINDOW</EM> structure,
            and
 
        <STRONG>o</STRONG>   finally, lines as done by other implementations.
 
 
-</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
-       Given  a  simple  program  which writes text to the screen (and for the
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+       Given a simple program which writes text to the  screen  (and  for  the
        sake of example, limiting the screen-size to 10x20):
 
            #include &lt;curses.h&gt;
 
        <STRONG>o</STRONG>   The actual color pair values are not written to the file.
 
-       <STRONG>o</STRONG>   All  characters  are  shown  in  printable form; spaces are "\s" to
+       <STRONG>o</STRONG>   All characters are shown in printable  form;  spaces  are  "\s"  to
            ensure they are not overlooked.
 
-       <STRONG>o</STRONG>   Attributes are written in escaped curly  braces,  e.g.,  "\{BOLD}",
-           and may include a color-pair (C1 or C2 in this example).
+       <STRONG>o</STRONG>   Attributes  are  written  in escaped curly braces, e.g., "\{BOLD}",
+           and may include a color pair (C1 or C2 in this example).
 
-       <STRONG>o</STRONG>   The  parameters  in  the  header  are  written out only if they are
+       <STRONG>o</STRONG>   The parameters in the header are  written  out  only  if  they  are
            nonzero.  When reading back, order does not matter.
 
        Running the same program with Solaris <EM>xpg4</EM> curses gives this dump:
            9,19,0,0,
            CUR=11,5
 
-       Solaris <STRONG>getwin</STRONG> requires that all parameters are  present,  and  in  the
-       same  order.  The <EM>xpg4</EM> curses library does not know about the <STRONG>bce</STRONG> (back
+       Solaris  <STRONG>getwin</STRONG>  requires  that  all parameters are present, and in the
+       same order.  The <EM>xpg4</EM> curses library does not know about the <STRONG>bce</STRONG>  (back
        color erase) capability, and does not color the window background.
 
-       On the other  hand,  the  SVr4  curses  library  does  know  about  the
-       background  color.   However,  its screen dumps are in binary.  Here is
+       On  the  other  hand,  the  SVr4  curses  library  does  know about the
+       background color.  However, its screen dumps are in  binary.   Here  is
        the corresponding dump (using "od -t x1"):
 
            0000000 1c 01 c3 d6 f3 58 05 00 0b 00 0a 00 14 00 00 00
            0002371
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>.
-
-
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Thomas E. Dickey
-       extended screen-dump format for ncurses 6.0 (2015)
+       extended screen-dump format for <EM>ncurses</EM> 6.0 (2015)
 
        Eric S. Raymond
-       screen dump feature in ncurses 1.9.2d (1995)
+       screen dump feature in <EM>ncurses</EM> 1.9.2d (1995)
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+
 
-                                                                   <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
+
+ncurses 6.5                       2024-03-23                       <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
-<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-ncurses6">ncurses6</a></li>
-<li><a href="#h3-ncurses5-_legacy_">ncurses5 (legacy)</a></li>
+<li><a href="#h3-ncurses5-_Legacy_">ncurses5 (Legacy)</a></li>
 </ul>
 </li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
 <ul>
 <li><a href="#h3-X_Open-Curses">X/Open Curses</a></li>
-<li><a href="#h3-Unix-SystemV">Unix SystemV</a></li>
+<li><a href="#h3-System-V">System V</a></li>
 <li><a href="#h3-Solaris">Solaris</a></li>
 <li><a href="#h3-PDCurses">PDCurses</a></li>
 <li><a href="#h3-NetBSD">NetBSD</a></li>
 </ul>
 </li>
-<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>