date and time created 81/01/26 17:03:11 by arnold
authorKen Arnold <arnold@ucbvax.Berkeley.EDU>
Tue, 27 Jan 1981 09:03:11 +0000 (01:03 -0800)
committerKen Arnold <arnold@ucbvax.Berkeley.EDU>
Tue, 27 Jan 1981 09:03:11 +0000 (01:03 -0800)
SCCS-vsn: lib/libcurses/scanw.c 1.1

usr/src/lib/libcurses/scanw.c [new file with mode: 0644]

diff --git a/usr/src/lib/libcurses/scanw.c b/usr/src/lib/libcurses/scanw.c
new file mode 100644 (file)
index 0000000..0b8efee
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * scanw and friends
+ *
+ * %G% (Berkeley) @(#)scanw.c  1.1
+ */
+
+# include      "curses.ext"
+
+/*
+ *     This routine implements a scanf on the standard screen.
+ */
+scanw(fmt, args)
+char   *fmt;
+int    args; {
+
+       return _sscans(stdscr, fmt, &args);
+}
+/*
+ *     This routine implements a scanf on the given window.
+ */
+wscanw(win, fmt, args)
+WINDOW *win;
+char   *fmt;
+int    args; {
+
+       return _sscans(win, fmt, &args);
+}
+/*
+ *     This routine actually executes the scanf from the window.
+ *
+ *     This is really a modified version of "sscanf".  As such,
+ * it assumes that sscanf interfaces with the other scanf functions
+ * in a certain way.  If this is not how your system works, you
+ * will have to modify this routine to use the interface that your
+ * "sscanf" uses.
+ */
+_sscans(win, fmt, args)
+WINDOW *win;
+char   *fmt;
+int    *args; {
+
+       char    buf[100];
+       FILE    junk;
+
+       junk._flag = _IOREAD|_IOSTRG;
+       junk._base = junk._ptr = buf;
+       if (wgetstr(win, buf) == ERR)
+               return ERR;
+       junk._cnt = strlen(buf);
+       return _doscan(&junk, fmt, args);
+}