]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - man/curs_scanw.3x
ncurses 6.1 - patch 20200111
[ncurses.git] / man / curs_scanw.3x
index c0053315c255d3c3282c3c070949920e2b41f561..ccbe8af32bbbb13fd1c37f17ed6dd6099c815a66 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
+.\" Copyright (c) 1998-2018,2019 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            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_scanw.3x,v 1.10 2000/07/01 20:06:29 tom Exp $
+.\" $Id: curs_scanw.3x,v 1.25 2019/11/30 21:06:30 tom Exp $
 .TH curs_scanw 3X ""
+.ie \n(.g .ds `` \(lq
+.el       .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el       .ds '' ''
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .SH NAME
 \fBscanw\fR,
 \fBwscanw\fR,
 \fBmvscanw\fR,
 \fBmvwscanw\fR,
-\fBvwscanw\fR, \fBvw_scanw\fR - convert formatted input from a \fBcurses\fR widow
+\fBvwscanw\fR, \fBvw_scanw\fR \- convert formatted input from a \fBcurses\fR window
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
-
-\fBint scanw(char *fmt\fR [\fB, arg\fR] \fB...);\fR
+.sp
+\fBint scanw(const char *fmt, ...);\fR
 .br
-\fBint wscanw(WINDOW *win, char *fmt\fR [\fB, arg\fR] \fB...);\fR
+\fBint wscanw(WINDOW *win, const char *fmt, ...);\fR
 .br
-\fBint mvscanw(int y, int x, char *fmt\fR [\fB, arg\fR] \fB...);\fR
+\fBint mvscanw(int y, int x, const char *fmt, ...);\fR
 .br
-\fBint mvwscanw(WINDOW *win, int y, int x,\fR
-      \fBchar *fmt\fR [\fB, arg]\fR \fB...);\fR
+\fBint mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...);\fR
 .br
-\fBint vw_scanw(WINDOW *win, char *fmt, va_list varglist);\fR
+\fBint vw_scanw(WINDOW *win, const char *fmt, va_list varglist);\fR
+.sp
+/* obsolete */
 .br
-\fBint vwscanw(WINDOW *win, char *fmt, va_list varglist);\fR
+\fBint vwscanw(WINDOW *win, const char *fmt, va_list varglist);\fR
 .SH DESCRIPTION
 The \fBscanw\fR, \fBwscanw\fR and \fBmvscanw\fR routines are analogous to
-\fBscanf\fR [see \fBscanf\fR(3S)].  The effect of these routines is as though
+\fBscanf\fR [see \fBscanf\fR(3)].
+The effect of these routines is as though
 \fBwgetstr\fR were called on the window, and the resulting line used as input
-for \fBsscanf\fR(3).  Fields which do not map to a variable in the \fIfmt\fR
+for \fBsscanf\fR(3).
+Fields which do not map to a variable in the \fIfmt\fR
 field are lost.
-
-The \fBvwscanw\fR routine is similar to \fBvwprintw\fR in that it performs a
-\fBwscanw\fR using a variable argument list.  The third argument is a
-\fIva\fR_\fIlist\fR, a pointer to a list of arguments, as defined in
-\fB<varargs.h>\fR.
+.PP
+The \fBvwscanw\fR and \fBvw_scanw\fR routines are analogous to \fBvscanf\fR(3).
+They perform a \fBwscanw\fR using a variable argument list.
+The third argument is a \fIva_list\fR,
+a pointer to a list of arguments, as defined in \fB<stdarg.h>\fR.
 .SH RETURN VALUE
 \fBvwscanw\fR returns \fBERR\fR on failure and an integer equal to the
 number of fields scanned on success.
-
+.PP
 Applications may use the return value from the \fBscanw\fR, \fBwscanw\fR,
 \fBmvscanw\fR and \fBmvwscanw\fR routines to determine the number of fields
 which were mapped in the call.
+.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.
 .SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions.  The function
+In this implementation, \fBvw_scanw\fP and \fBvwscanw\fP are equivalent,
+to support legacy applications.
+However, the latter (\fBvwscanw\fP) is obsolete:
+.bP
+The XSI Curses standard, Issue 4 described these functions,
+noting that the function
 \fBvwscanw\fR is marked TO BE WITHDRAWN, and is to be replaced by a function
 \fBvw_scanw\fR using the \fB<stdarg.h>\fR interface.
+.bP
+The Single Unix Specification, Version 2 states that
+\fBvw_scanw\fR  is preferred to \fBvwscanw\fR since the latter requires
+including \fB<varargs.h>\fR, which
+cannot be used in the same file as \fB<stdarg.h>\fR.
+This implementation uses \fB<stdarg.h>\fR for both, because that header
+is included in \fB<curses.h\fR>.
+.bP
+X/Open Curses, Issue 5 (December 2007) marked \fBvwscanw\fP (along with
+\fBvwprintw\fP and the termcap interface) as withdrawn.
+.LP
+Both XSI and The Single Unix Specification, Version 2 state that these
+functions return \fBERR\fP or \fBOK\fP.
+.bP
+Since the underlying \fBscanf\fR(3) can return the number of items scanned,
+and the SVr4 code was documented to use this feature,
+this is probably an editing error which was introduced in XSI,
+rather than being done intentionally.
+.bP
+This implementation returns the number of items scanned,
+for compatibility with SVr4 curses.
+As of 2018, NetBSD curses also returns the number of items scanned.
+Both ncurses and NetBSD curses call \fBvsscanf\fP to scan the string,
+which returns \fBEOF\fP on error.
+.bP
+Portable applications should only test if the return value is \fBERR\fP,
+since the \fBOK\fP value (zero) is likely to be misleading.
+.IP
+One possible way to get useful results would be to use a "%n" conversion
+at the end of the format string to ensure that something was processed.
 .SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_getstr\fR(3X), \fBcurs_printw\fR(3X), \fBscanf\fR(3S)
-.\"#
-.\"# The following sets edit modes for GNU EMACS
-.\"# Local Variables:
-.\"# mode:nroff
-.\"# fill-column:79
-.\"# End:
+.na
+\fBcurses\fR(3X),
+\fBcurs_getstr\fR(3X),
+\fBcurs_printw\fR(3X),
+\fBcurs_termcap\fP(3X),
+\fBscanf\fR(3).