X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=man%2Fcurs_getstr.3x;h=4a49352a146cdf6de9b3b1ca4ce1bee33f1def33;hb=HEAD;hp=bf5f63f0b8769bef6f595cdd63b7ecf5832f49db;hpb=74433bcf4f6fe40862a28f3c00edaedcd5054b01;p=ncurses.git diff --git a/man/curs_getstr.3x b/man/curs_getstr.3x index bf5f63f0..27b9c951 100644 --- a/man/curs_getstr.3x +++ b/man/curs_getstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" 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 * @@ -27,70 +27,70 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_getstr.3x,v 1.35 2021/12/25 20:14:56 tom Exp $ -.TH curs_getstr 3X "" -.ie \n(.g .ds `` \(lq -.el .ds `` `` -.ie \n(.g .ds '' \(rq -.el .ds '' '' +.\" $Id: curs_getstr.3x,v 1.63 2024/06/01 22:29:08 tom Exp $ +.TH curs_getstr 3X 2024-06-01 "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 .. -.na -.hy 0 .SH NAME -\fBgetstr\fP, -\fBgetnstr\fP, -\fBwgetstr\fP, -\fBwgetnstr\fP, -\fBmvgetstr\fP, -\fBmvgetnstr\fP, -\fBmvwgetstr\fP, -\fBmvwgetnstr\fP \- accept character strings from \fBcurses\fP terminal keyboard -.ad -.hy +\fB\%getstr\fP, +\fB\%getnstr\fP, +\fB\%wgetstr\fP, +\fB\%wgetnstr\fP, +\fB\%mvgetstr\fP, +\fB\%mvgetnstr\fP, +\fB\%mvwgetstr\fP, +\fB\%mvwgetnstr\fP \- +accept character strings from \fIcurses\fR terminal keyboard .SH SYNOPSIS -\fB#include \fP -.sp -\fBint getstr(char *\fP\fIstr\fP\fB);\fP -.br -\fBint getnstr(char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fP -.br -\fBint wgetstr(WINDOW *\fP\fIwin\fP\fB, char *\fP\fIstr\fP\fB);\fP -.br -\fBint wgetnstr(WINDOW *\fP\fIwin\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fP -.sp -\fBint mvgetstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB);\fP -.br -\fBint mvwgetstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB);\fP -.br -\fBint mvgetnstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fP -.br -\fBint mvwgetnstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fP -.br +.nf +\fB#include +.PP +\fBint getstr(char *\fIstr\fP); +\fBint getnstr(char *\fIstr\fP, int \fIn\fP); +\fBint wgetstr(WINDOW *\fIwin\fP, char *\fIstr\fP); +\fBint wgetnstr(WINDOW *\fIwin\fP, char *\fIstr\fP, int \fIn\fP); +.PP +\fBint mvgetstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP); +\fBint mvwgetstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP); +\fBint mvgetnstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP); +\fBint mvwgetnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP); +.fi .SH DESCRIPTION -The function \fBgetstr\fP is equivalent to a series of calls to \fBgetch\fP, -until a newline or carriage return is received (the terminating character is -not included in the returned string). -.\" X/Open says also until EOf -.\" X/Open says then an EOS is added to the result -.\" X/Open doesn't mention n<0 -The resulting value is placed in the -area pointed to by the character pointer \fIstr\fP, -followed by a NUL. -.PP -The \fBgetnstr\fP function reads -from the \fIstdscr\fP default window. -The other functions, such as \fBwgetnstr\fP, -read from the window given as a parameter. -.PP -\fBgetnstr\fP reads at most \fIn\fP characters, thus preventing a possible -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. +The function +\fBwgetnstr\fP +is equivalent to a series of calls to +\fBwgetch\fP(3X), +until a newline or carriage return terminates the series: +.bP +The terminating character is not included in the returned string. +.bP +In all instances, the end of the string is terminated +by a NUL. +.bP +The function stores the result in the area pointed to +by the \fIstr\fP parameter. +.bP +The function reads at most \fIn\fP characters, +thus preventing a possible overflow of the input buffer. +.IP +Any attempt to enter more characters +(other than the terminating newline or carriage return) +causes a beep. +.IP +Function keys also cause a beep and are ignored. .PP The user's \fIerase\fP and \fIkill\fP characters are interpreted: .bP @@ -99,40 +99,87 @@ at the end of the buffer, moving the cursor to the left. .IP If \fIkeypad\fP mode is on for the window, \fBKEY_LEFT\fP and \fBKEY_BACKSPACE\fP -are both considered equivalent to the user's erase character. +are both considered equivalent to the user's \fIerase\fP character. .bP The \fIkill\fP character (e.g., \fB^U\fP) erases the entire buffer, leaving the cursor at the beginning of the buffer. .PP Characters input are echoed only if \fBecho\fP is currently on. In that case, -backspace is echoed as deletion of the previous character (typically a left -motion). +backspace is echoed as deletion of the previous character +(typically a left motion). +.PP +The +\fBgetnstr\fP, +\fBmvgetnstr\fP, +\fBmvwgetnstr\fP, and +\fBwgetnstr\fP +functions are identical +to the +\fBgetstr\fP, +\fBmvgetstr\fP, +\fBmvwgetstr\fP, and +\fBwgetstr\fP +functions, respectively, +except that the +\fB*n*\fP +versions read at most +\fIn\fP +characters, letting the application prevent overflow of the +input buffer. .SH RETURN VALUE -All routines return the integer \fBERR\fP upon failure and an \fBOK\fP (SVr4 -specifies only \*(``an integer value other than \fBERR\fP\*('') upon successful -completion. +All of these functions return the integer \fBOK\fP upon successful completion. +(SVr4 specifies only \*(``an integer value other than \fBERR\fP\*('') +If unsuccessful, they return \fBERR\fP. .PP X/Open defines no error conditions. .PP In this implementation, -these functions return an error -if the window pointer is null, or -if its timeout expires without having any data. +these functions return +.B ERR +.bP +if the window pointer is null, +.bP +if its timeout expires without having any data, or +.bP +if the associated call to +\fBwgetch\fP +failed. .PP This implementation provides an extension as well. If a \fBSIGWINCH\fP interrupts the function, it will return \fBKEY_RESIZE\fP rather than \fBOK\fP or \fBERR\fP. .PP -Functions with a \*(``mv\*('' prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. +Functions prefixed with \*(``mv\*('' first perform cursor movement and +fail if the position +.RI ( y , +.IR x ) +is outside the window boundaries. .SH NOTES -Note that \fBgetstr\fP, \fBmvgetstr\fP, and \fBmvwgetstr\fP may be macros. +Any of these functions other than +\fBwgetnstr\fP +may be macros. +.PP +Using +\fBgetstr\fP, +\fBmvgetstr\fP, +\fBmvwgetstr\fP, or +\fBwgetstr\fP +to read a line that +overflows the array pointed to by +\fBstr\fP +causes undefined +results. +The use of +\fBgetnstr\fP, +\fBmvgetnstr\fP, +\fBmvwgetnstr\fP, or +\fBwgetnstr\fP, +respectively, is recommended. .SH PORTABILITY -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. +These functions are described in The Single Unix Specification, Version 2. +No error conditions are defined. +.PP This implementation returns \fBERR\fP if the window pointer is null, or if the lower-level \fBwgetch\fP(3X) call returns an \fBERR\fP. .PP @@ -153,13 +200,13 @@ present but not documented in SVr4. .PP X/Open Curses, Issue 5 (2007) stated that these functions \*(``read at most \fIn\fP bytes\*('' -but did not state whether the terminating NUL is counted in that limit. +but did not state whether the terminating NUL counted toward that limit. X/Open Curses, Issue 7 (2009) changed that to say they \*(``read at most \fIn\fP\-1 bytes\*('' to allow for the terminating NUL. -As of 2018, some implementations do, some do not count it: +As of 2018, some implementations count it, some do not: .bP -ncurses 6.1 and PDCurses do not count the NUL in the given limit, while +\fI\%ncurses\fP 6.1 and PDCurses do not count the NUL in the given limit, while .bP Solaris SVr4 and NetBSD curses count the NUL as part of the limit. .bP @@ -187,15 +234,15 @@ that it is greater than zero. .IP A comment in NetBSD's source code states that this is specified in SUSv2. .bP -ncurses (before 6.2) assumes no particular limit for the result +\fI\%ncurses\fP (before 6.2) assumes no particular limit for the result from \fBwgetstr\fP, and treats the \fIn\fP parameter of \fBwgetnstr\fP like SVr4 curses. .bP -ncurses 6.2 uses \fBLINE_MAX\fP, +\fI\%ncurses\fP 6.2 uses \fBLINE_MAX\fP, or a larger (system-dependent) value which the \fBsysconf\fP function may provide. If neither \fBLINE_MAX\fP or \fBsysconf\fP is available, -ncurses uses the POSIX value for \fBLINE_MAX\fP (a 2048 byte limit). +\fI\%ncurses\fP uses the POSIX value for \fBLINE_MAX\fP (a 2048 byte limit). In either case, it reserves a byte for the terminating NUL. .PP Although \fBgetnstr\fP is equivalent to a series of calls to \fBgetch\fP, @@ -225,22 +272,31 @@ They may take the \fIcbreak\fP mode set by the caller into account when deciding whether to handle echoing within \fBgetnstr\fP or as a side-effect of the \fBgetch\fP calls. .bP -The original ncurses (as \fIpcurses\fP in 1986) set \fBnoraw\fP and \fBcbreak\fP -when accepting input for \fBgetnstr\fP. +The original \fI\%ncurses\fP +(as \fIpcurses\fP in 1986) +set \fBnoraw\fP and \fBcbreak\fP when accepting input for \fBgetnstr\fP. That may have been done to make function- and cursor-keys work; -it is not necessary with ncurses. +it is not necessary with \fI\%ncurses\fP. .IP -Since 1995, ncurses has provided signal handlers for INTR and QUIT -(e.g., \fB^C\fP or \fB^\\\fP). +Since 1995, +\fI\%ncurses\fP has provided signal handlers for INTR and QUIT +(e.g., \fB^C\fP or \fB^\e\fP). With the \fBnoraw\fP and \fBcbreak\fP settings, those may catch a signal and stop the program, where other implementations allow one to enter those characters in the buffer. .bP -Starting in 2021 (ncurses 6.3), \fBgetnstr\fP sets \fBraw\fP, +Starting in 2021 +(\fI\%ncurses\fP 6.3), +\fBgetnstr\fP sets \fBraw\fP, rather than \fBnoraw\fP and \fBcbreak\fP for better compatibility with SVr4-curses, e.g., allowing one to enter a \fB^C\fP into the buffer. .SH SEE ALSO -\fBcurses\fP(3X), -\fBcurs_getch\fP(3X), -\fBcurs_termattrs\fP(3X), -\fBcurs_variables\fP(3X). +\fB\%curs_get_wstr\fP(3X) describes comparable functions of the +.I \%ncurses +library in its wide-character configuration +.RI \%( ncursesw ). +.PP +\fB\%curses\fP(3X), +\fB\%curs_getch\fP(3X), +\fB\%curs_termattrs\fP(3X), +\fB\%curs_variables\fP(3X)