129 lines
4.4 KiB
C
129 lines
4.4 KiB
C
#include <string.h>
|
|
#include <curses.h>
|
|
#include "curspriv.h"
|
|
|
|
static char printscanbuf[513]; /* buffer used during I/O */
|
|
|
|
/****************************************************************/
|
|
/* Wprintw(win,fmt,args) does a printf() in window 'win'. */
|
|
/****************************************************************/
|
|
int wprintw(WINDOW *win, const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
vsprintf(printscanbuf, fmt, args);
|
|
if (waddstr(win, printscanbuf) == ERR) return(ERR);
|
|
return(strlen(printscanbuf));
|
|
}
|
|
|
|
/****************************************************************/
|
|
/* Printw(fmt,args) does a printf() in stdscr. */
|
|
/****************************************************************/
|
|
int printw(const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
vsprintf(printscanbuf, fmt, args);
|
|
if (waddstr(stdscr, printscanbuf) == ERR) return(ERR);
|
|
return(strlen(printscanbuf));
|
|
} /* printw */
|
|
|
|
/****************************************************************/
|
|
/* Mvprintw(fmt,args) moves the stdscr cursor to a new posi- */
|
|
/* tion, then does a printf() in stdscr. */
|
|
/****************************************************************/
|
|
int mvprintw(int y, int x, const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
if (wmove(stdscr, y, x) == ERR) return(ERR);
|
|
vsprintf(printscanbuf, fmt, args);
|
|
if (waddstr(stdscr, printscanbuf) == ERR) return(ERR);
|
|
return(strlen(printscanbuf));
|
|
}
|
|
|
|
/****************************************************************/
|
|
/* Mvwprintw(win,fmt,args) moves the window 'win's cursor to */
|
|
/* A new position, then does a printf() in window 'win'. */
|
|
/****************************************************************/
|
|
int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
if (wmove(win, y, x) == ERR) return(ERR);
|
|
vsprintf(printscanbuf, fmt, args);
|
|
if (waddstr(win, printscanbuf) == ERR) return(ERR);
|
|
return(strlen(printscanbuf));
|
|
} /* mvwprintw */
|
|
|
|
/****************************************************************/
|
|
/* Wscanw(win,fmt,args) gets a string via window 'win', then */
|
|
/* Scans the string using format 'fmt' to extract the values */
|
|
/* And put them in the variables pointed to the arguments. */
|
|
/****************************************************************/
|
|
int wscanw(WINDOW *win, const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
wrefresh(win); /* set cursor */
|
|
if (wgetstr(win, printscanbuf) == ERR) /* get string */
|
|
return(ERR);
|
|
return(vsscanf(printscanbuf, fmt, args));
|
|
} /* wscanw */
|
|
|
|
/****************************************************************/
|
|
/* Scanw(fmt,args) gets a string via stdscr, then scans the */
|
|
/* String using format 'fmt' to extract the values and put them */
|
|
/* In the variables pointed to the arguments. */
|
|
/****************************************************************/
|
|
int scanw(const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
wrefresh(stdscr); /* set cursor */
|
|
if (wgetstr(stdscr, printscanbuf) == ERR) /* get string */
|
|
return(ERR);
|
|
return(vsscanf(printscanbuf, fmt, args));
|
|
} /* scanw */
|
|
|
|
/****************************************************************/
|
|
/* Mvscanw(y,x,fmt,args) moves stdscr's cursor to a new posi- */
|
|
/* Tion, then gets a string via stdscr and scans the string */
|
|
/* Using format 'fmt' to extract the values and put them in the */
|
|
/* Variables pointed to the arguments. */
|
|
/****************************************************************/
|
|
int mvscanw(int y, int x, const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
if (wmove(stdscr, y, x) == ERR) return(ERR);
|
|
wrefresh(stdscr); /* set cursor */
|
|
if (wgetstr(stdscr, printscanbuf) == ERR) /* get string */
|
|
return(ERR);
|
|
return(vsscanf(printscanbuf, fmt, args));
|
|
} /* mvscanw */
|
|
|
|
/****************************************************************/
|
|
/* Mvwscanw(win,y,x,fmt,args) moves window 'win's cursor to a */
|
|
/* New position, then gets a string via 'win' and scans the */
|
|
/* String using format 'fmt' to extract the values and put them */
|
|
/* In the variables pointed to the arguments. */
|
|
/****************************************************************/
|
|
int mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
if (wmove(win, y, x) == ERR) return(ERR);
|
|
wrefresh(win); /* set cursor */
|
|
if (wgetstr(win, printscanbuf) == ERR) /* get string */
|
|
return(ERR);
|
|
return(vsscanf(printscanbuf, fmt, args));
|
|
} /* mvwscanw */
|