-<!--
+<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright 2018-2023,2024 Thomas E. Dickey *
+ * Copyright 2002-2012,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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_get_wstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_get_wstr.3x,v 1.48 2024/04/20 19:18:18 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 http://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_get_wstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>curs_get_wstr 3x 2024-04-20 ncurses 6.4 Library calls</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+
</HEAD>
<BODY>
-<H1 class="no-header">curs_get_wstr 3x</H1>
+<H1 class="no-header">curs_get_wstr 3x 2024-04-20 ncurses 6.4 Library calls</H1>
<PRE>
-<STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> Library calls <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
-</PRE>
-<H2><a name="h2-NAME">NAME</a></H2><PRE>
- <STRONG>get_wstr</STRONG>, <STRONG>getn_wstr</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetn_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>,
- <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG> - get an array of
- wide characters from a curses terminal keyboard
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>get_wstr</STRONG>, <STRONG>getn_wstr</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetn_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>,
+ <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG> - get a wide-character string from a <EM>curses</EM>
+ terminal keyboard
-</PRE>
-<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
<STRONG>int</STRONG> <STRONG>get_wstr(wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>getn_wstr(wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>wget_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>wgetn_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+
<STRONG>int</STRONG> <STRONG>mvget_wstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>mvgetn_wstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>mvwget_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>mvwgetn_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
- The effect of <STRONG>get_wstr</STRONG> is as though a series of calls to
- <STRONG>get_wch</STRONG> were made, until a newline, other end-of-line, or
- end-of-file condition is processed. An end-of-file condi-
- tion is represented by <STRONG>WEOF</STRONG>, as defined in <STRONG><wchar.h></STRONG>. The
- newline and end-of-line conditions are represented by the
- <STRONG>\n</STRONG> <STRONG>wchar_t</STRONG> value. In all instances, the end of the string
- is terminated by a null <STRONG>wchar_t</STRONG>. The routine places re-
- sulting values in the area pointed to by <EM>wstr</EM>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>wgetn_wstr</STRONG> is equivalent to a series of calls to
+ <STRONG><A HREF="curs_get_wch.3x.html">wget_wch(3x)</A></STRONG> until a newline or carriage return terminates the series:
- The user's erase and kill characters are interpreted. If
- keypad mode is on for the window, <STRONG>KEY_LEFT</STRONG> and
- <STRONG>KEY_BACKSPACE</STRONG> are both considered equivalent to the user's
- kill character.
+ <STRONG>o</STRONG> The terminating character is not included in the returned string.
- Characters input are echoed only if <STRONG>echo</STRONG> is currently on.
- In that case, backspace is echoed as deletion of the pre-
- vious character (typically a left motion).
+ <STRONG>o</STRONG> An end-of-file condition is represented by <STRONG>WEOF</STRONG>, as defined in
+ <STRONG><wchar.h></STRONG>.
- The effect of <STRONG>wget_wstr</STRONG> is as though a series of calls to
- <STRONG>wget_wch</STRONG> were made.
+ <STRONG>o</STRONG> In all instances, the end of the string is terminated by a null
+ <STRONG>wchar_t</STRONG>.
- The effect of <STRONG>mvget_wstr</STRONG> is as though a call to <STRONG>move</STRONG> and
- then a series of calls to <STRONG>get_wch</STRONG> were made.
+ <STRONG>o</STRONG> The function stores the result in the area pointed to by the <EM>wstr</EM>
+ parameter.
- The effect of <STRONG>mvwget_wstr</STRONG> is as though a call to <STRONG>wmove</STRONG> and
- then a series of calls to <STRONG>wget_wch</STRONG> were made.
+ <STRONG>o</STRONG> The function reads at most <EM>n</EM> characters, thus preventing a possible
+ overflow of the input buffer.
- The <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, and <STRONG>wgetn_wstr</STRONG>
- functions are identical to the <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>,
- <STRONG>mvwget_wstr</STRONG>, and <STRONG>wget_wstr</STRONG> functions, respectively, except
- that the <STRONG>*n_*</STRONG> versions read at most <EM>n</EM> characters, letting
- the application prevent overflow of the input buffer.
+ Any attempt to enter more characters (other than the terminating
+ newline or carriage return) causes a beep.
+ Function keys also cause a beep and are ignored.
-</PRE>
-<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
- Using <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, or <STRONG>wget_wstr</STRONG> to
- read a line that overflows the array pointed to by <STRONG>wstr</STRONG>
- causes undefined results. The use of <STRONG>getn_wstr</STRONG>,
- <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, or <STRONG>wgetn_wstr</STRONG>, respectively, is
- recommended.
+ The user's <EM>erase</EM> and <EM>kill</EM> characters are interpreted:
- These functions cannot return <STRONG>KEY_</STRONG> values because there is
- no way to distinguish a <STRONG>KEY_</STRONG> value from a valid <STRONG>wchar_t</STRONG>
- value.
+ <STRONG>o</STRONG> The <EM>erase</EM> character (e.g., <STRONG>^H</STRONG>) erases the character at the end of
+ the buffer, moving the cursor to the left.
- All of these routines except <STRONG>wgetn_wstr</STRONG> may be macros.
+ If <EM>keypad</EM> mode is on for the window, <STRONG>KEY_LEFT</STRONG> and <STRONG>KEY_BACKSPACE</STRONG> are
+ both considered equivalent to the user's <EM>erase</EM> character.
+ <STRONG>o</STRONG> The <EM>kill</EM> character (e.g., <STRONG>^U</STRONG>) erases the entire buffer, leaving the
+ cursor at the beginning of the buffer.
-</PRE>
-<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
- All of these functions return <STRONG>OK</STRONG> upon successful comple-
- tion. Otherwise, they return <STRONG>ERR</STRONG>.
+ Characters input are echoed only if <STRONG>echo</STRONG> is currently on. In that
+ case, backspace is echoed as deletion of the previous character
+ (typically a left motion).
- Functions using a window parameter return an error if it
- is null.
+ The <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, and <STRONG>wgetn_wstr</STRONG> functions are
+ identical to the <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, and <STRONG>wget_wstr</STRONG>
+ functions, respectively, except that the <STRONG>*n_*</STRONG> versions read at most <EM>n</EM>
+ characters, letting the application prevent overflow of the input
+ buffer.
- <STRONG>wgetn_wstr</STRONG>
- returns an error if the associated call to
- <STRONG>wget_wch</STRONG> failed.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All of these functions return the integer <STRONG>OK</STRONG> upon successful
+ completion. If unsuccessful, they return <STRONG>ERR</STRONG>.
+ X/Open defines no error conditions.
-</PRE>
-<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
- These functions are described in The Single Unix Specifi-
- cation, Version 2. No error conditions are defined. This
- implementation returns ERR if the window pointer is null,
- or if the lower-level <STRONG>wget_wch</STRONG> call returns an ERR. In
- the latter case, an ERR return without other data is
- treated as an end-of-file condition, and the returned ar-
- ray contains a <STRONG>WEOF</STRONG> followed by a null <STRONG>wchar_t</STRONG>.
+ In this implementation, these functions return an error
- X/Open curses documents these functions to pass an array
- of <STRONG>wchar_t</STRONG>, but all of the vendors implement this using
- <STRONG>wint_t</STRONG>.
+ <STRONG>o</STRONG> if the window pointer is null,
+ <STRONG>o</STRONG> if its timeout expires without having any data, or
+
+ <STRONG>o</STRONG> if the associated call to <STRONG>wget_wch</STRONG> failed.
+
+ Functions prefixed with "mv" first perform cursor movement and fail if
+ the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Any of these functions other than <STRONG>wgetn_wstr</STRONG> may be macros.
+
+ Using <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, or <STRONG>wget_wstr</STRONG> to read a line
+ that overflows the array pointed to by <STRONG>wstr</STRONG> causes undefined results.
+ The use of <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, or <STRONG>wgetn_wstr</STRONG>,
+ respectively, is recommended.
+
+ These functions cannot return <STRONG>KEY_</STRONG> values because there is no way to
+ distinguish a <STRONG>KEY_</STRONG> value from a valid <STRONG>wchar_t</STRONG> value.
-</PRE>
-<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
- Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in The Single Unix Specification, Version
+ 2. No error conditions are defined.
+ This implementation returns <STRONG>ERR</STRONG> if the window pointer is null, or if
+ the lower-level <STRONG>wget_wch</STRONG> call returns an <STRONG>ERR</STRONG>. In the latter case, an
+ <STRONG>ERR</STRONG> return without other data is treated as an end-of-file condition,
+ and the returned array contains a <STRONG>WEOF</STRONG> followed by a null <STRONG>wchar_t</STRONG>.
- <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ X/Open curses documented these functions to pass an array of <STRONG>wchar_t</STRONG> in
+ 1997, but that was an error because of this part of the description:
+
+ The effect of <STRONG>get_wstr</STRONG> is as though a series of calls to <STRONG>get_wch</STRONG>
+ were made, until a newline character, end-of-line character, or
+ end-of-file character is processed.
+
+ The latter function <EM>get</EM><STRONG>_</STRONG><EM>wch</EM> can return a negative value, while <STRONG>wchar_t</STRONG>
+ is a unsigned type. All of the vendors implement this using <STRONG>wint_t</STRONG>,
+ following the standard.
+
+ X/Open Curses, Issue 7 (2009) is unclear regarding whether the
+ terminating <EM>null</EM> <STRONG>wchar_t</STRONG> value is counted in the length parameter <EM>n</EM>.
+ X/Open Curses, Issue 7 revised the corresponding description of
+ <STRONG>wgetnstr</STRONG> to address this issue. The unrevised description of
+ <STRONG>wget_nwstr</STRONG> can be interpreted either way. This implementation counts
+ the terminator in the length.
+
+ X/Open Curses does not specify what happens if the length <EM>n</EM> is
+ negative.
+
+ <STRONG>o</STRONG> For analogy with <STRONG>wgetnstr</STRONG>, <EM>ncurses</EM> 6.2 uses a limit (based on
+ <STRONG>LINE_MAX</STRONG>).
+
+ <STRONG>o</STRONG> Some other implementations (such as Solaris xcurses) do the same,
+ while others (PDCurses) do not allow this.
+
+ <STRONG>o</STRONG> NetBSD 7 curses imitates <EM>ncurses</EM> 6.1 in this regard, treating a <STRONG>-1</STRONG>
+ as an indefinite number of characters.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library
+ in its non-wide-character configuration.
+
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+
+
+
+ncurses 6.4 2024-04-20 <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</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></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
</ul>