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