<!--
****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey *
+ * 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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_get_wstr.3x,v 1.21 2020/10/17 23:17:24 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 https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_get_wstr 3X</TITLE>
+<TITLE>curs_get_wstr 3x 2024-04-20 ncurses 6.5 Library calls</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">curs_get_wstr 3X</H1>
+<H1 class="no-header">curs_get_wstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
<PRE>
-<B><A HREF="curs_get_wstr.3X.html">curs_get_wstr(3X)</A></B> <B><A HREF="curs_get_wstr.3X.html">curs_get_wstr(3X)</A></B>
+<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>
- <B>get_wstr</B>, <B>getn_wstr</B>, <B>wget_wstr</B>, <B>wgetn_wstr</B>, <B>mvget_wstr</B>, <B>mvgetn_wstr</B>,
- <B>mvwget_wstr</B>, <B>mvwgetn_wstr</B> - get an array of wide characters from a
- curses terminal keyboard
+ <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>
- <B>#include</B> <B><curses.h></B>
+ <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- <B>int</B> <B>get_wstr(wint_t</B> <B>*</B><I>wstr</I><B>);</B>
- <B>int</B> <B>getn_wstr(wint_t</B> <B>*</B><I>wstr</I><B>,</B> <B>int</B> <I>n</I><B>);</B>
- <B>int</B> <B>wget_wstr(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>wint_t</B> <B>*</B><I>wstr</I><B>);</B>
- <B>int</B> <B>wgetn_wstr(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>wint_t</B> <B>*</B><I>wstr</I><B>,</B> <B>int</B> <I>n</I><B>);</B>
+ <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>
- <B>int</B> <B>mvget_wstr(int</B> <I>y</I><B>,</B> <B>int</B> <I>x</I><B>,</B> <B>wint_t</B> <B>*</B><I>wstr</I><B>);</B>
- <B>int</B> <B>mvgetn_wstr(int</B> <I>y</I><B>,</B> <B>int</B> <I>x</I><B>,</B> <B>wint_t</B> <B>*</B><I>wstr</I><B>,</B> <B>int</B> <I>n</I><B>);</B>
- <B>int</B> <B>mvwget_wstr(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>int</B> <I>y</I><B>,</B> <B>int</B> <I>x</I><B>,</B> <B>wint_t</B> <B>*</B><I>wstr</I><B>);</B>
- <B>int</B> <B>mvwgetn_wstr(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>int</B> <I>y</I><B>,</B> <B>int</B> <I>x</I><B>,</B> <B>wint_t</B> <B>*</B><I>wstr</I><B>,</B> <B>int</B> <I>n</I><B>);</B>
+ <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 <B>get_wstr</B> is as though a series of calls to <B><A HREF="curs_get_wch.3X.html">get_wch(3X)</A></B>
- were made, until a newline, other end-of-line, or end-of-file condition
- is processed. An end-of-file condition is represented by <B>WEOF</B>, as de-
- fined in <B><wchar.h></B>. The newline and end-of-line conditions are repre-
- sented by the <B>\n</B> <B>wchar_t</B> value. In all instances, the end of the
- string is terminated by a null <B>wchar_t</B>. The routine places resulting
- values in the area pointed to by <I>wstr</I>.
+ 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, <B>KEY_LEFT</B> and <B>KEY_BACKSPACE</B> 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 <B>echo</B> is currently on. In that
- case, backspace is echoed as deletion of the previous character (typi-
- cally 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 <B>wget_wstr</B> is as though a series of calls to <B>wget_wch</B> 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 <B>mvget_wstr</B> is as though a call to <B>move</B> and then a series
- of calls to <B>get_wch</B> were made.
+ <STRONG>o</STRONG> The function stores the result in the area pointed to by the <EM>wstr</EM>
+ parameter.
- The effect of <B>mvwget_wstr</B> is as though a call to <B>wmove</B> and then a se-
- ries of calls to <B>wget_wch</B> were made.
+ <STRONG>o</STRONG> The function reads at most <EM>n</EM> characters, thus preventing a possible
+ overflow of the input buffer.
- The <B>getn_wstr</B>, <B>mvgetn_wstr</B>, <B>mvwgetn_wstr</B>, and <B>wgetn_wstr</B> functions are
- identical to the <B>get_wstr</B>, <B>mvget_wstr</B>, <B>mvwget_wstr</B>, and <B>wget_wstr</B> func-
- tions, respectively, except that the <B>*n_*</B> versions read at most <I>n</I> char-
- acters, 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 <B>get_wstr</B>, <B>mvget_wstr</B>, <B>mvwget_wstr</B>, or <B>wget_wstr</B> to read a line
- that overflows the array pointed to by <B>wstr</B> causes undefined results.
- The use of <B>getn_wstr</B>, <B>mvgetn_wstr</B>, <B>mvwgetn_wstr</B>, or <B>wgetn_wstr</B>, respec-
- tively, is recommended.
+ The user's <EM>erase</EM> and <EM>kill</EM> characters are interpreted:
+
+ <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.
+
+ 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.
- These functions cannot return <B>KEY_</B> values because there is no way to
- distinguish a <B>KEY_</B> value from a valid <B>wchar_t</B> value.
+ 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).
- All of these routines except <B>wgetn_wstr</B> may be macros.
+ 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.
</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
- All of these functions return <B>OK</B> upon successful completion. Other-
- wise, they return <B>ERR</B>.
+ All of these functions return the integer <STRONG>OK</STRONG> upon successful
+ completion. If unsuccessful, they return <STRONG>ERR</STRONG>.
- Functions using a window parameter return an error if it is null.
+ X/Open defines no error conditions.
- <B>wgetn_wstr</B>
- returns an error if the associated call to <B>wget_wch</B> failed.
+ In this implementation, these functions return an error
- Functions with a "mv" prefix first perform a cursor movement using
- <B>wmove</B>, and return an error if the position is outside the window, or if
- the window pointer is null.
+ <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-PORTABILITY">PORTABILITY</a></H2><PRE>
These functions are described in The Single Unix Specification, Version
- 2. No error conditions are defined. This implementation returns <B>ERR</B>
- if the window pointer is null, or if the lower-level <B>wget_wch</B> call re-
- turns an <B>ERR</B>. In the latter case, an <B>ERR</B> return without other data is
- treated as an end-of-file condition, and the returned array contains a
- <B>WEOF</B> followed by a null <B>wchar_t</B>.
+ 2. No error conditions are defined.
- X/Open curses documented these functions to pass an array of <B>wchar_t</B> in
+ 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>.
+
+ 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 <I>get</I><B>_</B><I>wstr()</I> is as though a series of calls to
- <I>get</I><B>_</B><I>wch()</I> were made, until a newline character, end-of-line
- character, or end-of-file character is processed.
+ 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 <I>get</I><B>_</B><I>wch()</I> can return a negative value, while
- <B>wchar_t</B> is a unsigned type. All of the vendors implement this using
- <B>wint_t</B>, following the standard.
+ 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 termi-
- nating <I>null</I> <B>wchar_t</B> value is counted in the length parameter <I>n</I>. X/Open
- Curses, Issue 7 revised the corresponding description of <B>wgetnstr</B> to
- address this issue. The unrevised description of <B>wget_nwstr</B> can be in-
- terpreted either way. This implementation counts the terminator in the
- length.
+ 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 <I>n</I> is nega-
- tive.
+ X/Open Curses does not specify what happens if the length <EM>n</EM> is
+ negative.
- <B>o</B> For analogy with <B>wgetnstr</B>, ncurses 6.2 uses a limit (based on
- <B>LINE_MAX</B>).
+ <STRONG>o</STRONG> For analogy with <STRONG>wgetnstr</STRONG>, <EM>ncurses</EM> 6.2 uses a limit (based on
+ <STRONG>LINE_MAX</STRONG>).
- <B>o</B> Some other implementations (such as Solaris xcurses) do the same,
+ <STRONG>o</STRONG> Some other implementations (such as Solaris xcurses) do the same,
while others (PDCurses) do not allow this.
- <B>o</B> NetBSD 7 curses imitates ncurses 6.1 in this regard, treating a <B>-1</B>
+ <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>
- Functions: <B><A HREF="curses.3X.html">curses(3X)</A></B>, <B><A HREF="curs_get_wch.3X.html">curs_get_wch(3X)</A></B>, <B><A HREF="curs_getstr.3X.html">curs_getstr(3X)</A></B>.
+ <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>
- <B><A HREF="curs_get_wstr.3X.html">curs_get_wstr(3X)</A></B>
+ncurses 6.5 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>