xref: /original-bsd/lib/libcurses/scanw.c (revision 3b6250d9)
1 /*
2  * Copyright (c) 1981 Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  */
7 
8 #ifndef lint
9 static char sccsid[] = "@(#)scanw.c	5.7 (Berkeley) 04/15/91";
10 #endif /* not lint */
11 
12 /*
13  * scanw and friends
14  *
15  */
16 
17 #if __STDC__
18 #include <stdarg.h>
19 #else
20 #include <varargs.h>
21 #endif
22 #include "curses.ext"
23 
24 /*
25  *	This routine implements a scanf on the standard screen.
26  */
27 #if __STDC__
28 scanw(const char *fmt, ...)
29 #else
30 scanw(fmt, va_alist)
31 	char *fmt;
32 	va_dcl
33 #endif
34 {
35 	va_list ap;
36 	int ret;
37 
38 #if __STDC__
39 	va_start(ap, fmt);
40 #else
41 	va_start(ap);
42 #endif
43 	ret = _sscans(stdscr, fmt, ap);
44 	va_end(ap);
45 	return ret;
46 }
47 
48 /*
49  *	This routine implements a scanf on the given window.
50  */
51 #if __STDC__
52 wscanw(WINDOW *win, const char *fmt, ...)
53 #else
54 wscanw(win, fmt, va_alist)
55 	WINDOW *win;
56 	char *fmt;
57 	va_dcl
58 #endif
59 {
60 	va_list ap;
61 	int ret;
62 
63 #if __STDC__
64 	va_start(ap, fmt);
65 #else
66 	va_start(ap);
67 #endif
68 	ret = _sscans(win, fmt, ap);
69 	va_end(ap);
70 	return ret;
71 }
72 
73 /*
74  *	This routine actually executes the scanf from the window.
75  *	THIS SHOULD BE RENAMED vwscanw AND EXPORTED
76  */
77 _sscans(win, fmt, ap)
78 	WINDOW *win;
79 #if __STDC__
80 	const char *fmt;
81 #else
82 	char *fmt;
83 #endif
84 	va_list ap;
85 {
86 	char buf[100];
87 
88 	return wgetstr(win, buf) == OK ? vsscanf(buf, fmt, ap) : ERR;
89 }
90