ncurses 6.2 - patch 20200314
[ncurses.git] / doc / html / man / curs_getstr.3x.html
index 52968d5ed0adfede7cb76742f4142af021393f1b..ca39dbf3beecbf3c7ca664c89d757aae418fff7c 100644 (file)
@@ -1,6 +1,7 @@
 <!-- 
   ****************************************************************************
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2010,2017 Free Software Foundation, Inc.              *
+  * Copyright 2018-2019,2020 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            *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getstr.3x,v 1.21 2017/02/18 16:37:18 tom Exp @
+  * @Id: curs_getstr.3x,v 1.29 2020/02/02 23:34:34 tom Exp @
+  * X/Open says also until EOf
+  * X/Open says then an EOS is added to the result
+  * X/Open doesn't mention n&lt;0
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 -->
 <!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 http://invisible-island.net/scripts/readme.html#others_scripts">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_getstr 3x</TITLE>
 <TITLE>curs_getstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
@@ -67,7 +71,7 @@
        The function <STRONG>getstr</STRONG> is equivalent to a series of calls to <STRONG>getch</STRONG>,  until
        a  newline or carriage return is received (the terminating character is
        not included in the returned string).  The resulting value is placed in
        The function <STRONG>getstr</STRONG> is equivalent to a series of calls to <STRONG>getch</STRONG>,  until
        a  newline or carriage return is received (the terminating character is
        not included in the returned string).  The resulting value is placed in
-       the area pointed to by the character pointer <EM>str</EM>.
+       the area pointed to by the character pointer <EM>str</EM>, followed by a NUL.
 
        <STRONG>wgetnstr</STRONG>  reads  at most <EM>n</EM> characters, thus preventing a possible over-
        flow of the input buffer.  Any attempt to enter more characters  (other
 
        <STRONG>wgetnstr</STRONG>  reads  at most <EM>n</EM> characters, thus preventing a possible over-
        flow of the input buffer.  Any attempt to enter more characters  (other
@@ -94,7 +98,7 @@
        In  this  implementation, these functions return an error if the window
        pointer is null, or if its timeout expires without having any data.
 
        In  this  implementation, these functions return an error if the window
        pointer is null, or if its timeout expires without having any data.
 
-       This implementation provides an extension as well.  If a  SIGWINCH  in-
+       This implementation provides an extension as well.  If a  <STRONG>SIGWINCH</STRONG>  in-
        terrupts the function, it will return <STRONG>KEY_RESIZE</STRONG> rather than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.
 
        Functions  with  a  "mv"  prefix  first perform a cursor movement using
        terrupts the function, it will return <STRONG>KEY_RESIZE</STRONG> rather than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.
 
        Functions  with  a  "mv"  prefix  first perform a cursor movement using
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions  are  described  in  the XSI Curses standard, Issue 4.
        They read single-byte characters only.  The standard  does  not  define
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions  are  described  in  the XSI Curses standard, Issue 4.
        They read single-byte characters only.  The standard  does  not  define
-       any  error  conditions.   This implementation returns ERR if the window
-       pointer is null, or if the lower-level <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> call returns an ERR.
+       any  error  conditions.   This implementation returns <STRONG>ERR</STRONG> if the window
+       pointer is null, or if the lower-level <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> call returns an <STRONG>ERR</STRONG>.
 
        SVr3 and early SVr4 curses  implementations  did  not  reject  function
        keys;  the  SVr4.0  documentation  claimed that "special keys" (such as
 
        SVr3 and early SVr4 curses  implementations  did  not  reject  function
        keys;  the  SVr4.0  documentation  claimed that "special keys" (such as
        The  functions  <STRONG>getnstr</STRONG>, <STRONG>mvgetnstr</STRONG>, and <STRONG>mvwgetnstr</STRONG> were present but not
        documented in SVr4.
 
        The  functions  <STRONG>getnstr</STRONG>, <STRONG>mvgetnstr</STRONG>, and <STRONG>mvwgetnstr</STRONG> were present but not
        documented in SVr4.
 
+       X/Open Curses, Issue 5 (2007) stated that these functions "read at most
+       <EM>n</EM>  bytes"  but  did not state whether the terminating NUL is counted in
+       that limit.  X/Open Curses, Issue 7 (2009) changed  that  to  say  they
+       "read at most <EM>n</EM>-1 bytes" to allow for the terminating NUL.  As of 2018,
+       some implementations do, some do not count it:
+
+       <STRONG>o</STRONG>   ncurses 6.1 and PDCurses do not count the NUL in the  given  limit,
+           while
+
+       <STRONG>o</STRONG>   Solaris SVr4 and NetBSD curses count the NUL as part of the limit.
+
+       <STRONG>o</STRONG>   Solaris  xcurses  provides  both:  its wide-character <STRONG>wget_nstr</STRONG> re-
+           serves a NUL, but its <STRONG>wgetnstr</STRONG> does not count the NUL consistently.
+
+       In SVr4 curses, a negative value of <EM>n</EM> tells <STRONG>wgetnstr</STRONG> to assume that the
+       caller's  buffer  is large enough to hold the result, i.e., to act like
+       <STRONG>wgetstr</STRONG>.  X/Open Curses does not mention this (or anything  related  to
+       negative  or  zero  values  of <EM>n</EM>), however most implementations use the
+       feature, with different limits:
+
+       <STRONG>o</STRONG>   Solaris SVr4 curses and PDCurses limit the  result  to  255  bytes.
+           Other Unix systems than Solaris are likely to use the same limit.
+
+       <STRONG>o</STRONG>   Solaris xcurses limits the result to <STRONG>LINE_MAX</STRONG> bytes.
+
+       <STRONG>o</STRONG>   NetBSD  7  assumes no particular limit for the result from <STRONG>wgetstr</STRONG>.
+           However, it limits the <STRONG>wgetnstr</STRONG> parameter <EM>n</EM> to ensure  that  it  is
+           greater than zero.
+
+           A  comment in NetBSD's source code states that this is specified in
+           SUSv2.
+
+       <STRONG>o</STRONG>   ncurses (before 6.2) assumes no particular  limit  for  the  result
+           from  <STRONG>wgetstr</STRONG>,  and  treats  the  <EM>n</EM> parameter of <STRONG>wgetnstr</STRONG> like SVr4
+           curses.
+
+       <STRONG>o</STRONG>   ncurses 6.2 uses <STRONG>LINE_MAX</STRONG>, or  a  larger  (system-dependent)  value
+           which  the  <STRONG>sysconf</STRONG>  function  may provide.  If neither <STRONG>LINE_MAX</STRONG> or
+           <STRONG>sysconf</STRONG> is available, ncurses uses the POSIX value for <STRONG>LINE_MAX</STRONG>  (a
+           2048  byte limit).  In either case, it reserves a byte for the ter-
+           minating NUL.
+
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.