V10/ncurses/screen/miniinit.c
/* @(#) miniinit.c: 1.1 10/15/83 (1.5 3/16/83) */
# include "curses.ext"
# include <signal.h>
char *calloc();
extern char *getenv();
static WINDOW *makenew();
struct screen *m_newterm();
/*
* This routine initializes the current and standard screen.
*
* 3/5/81 (Berkeley) @(#)initscr.c 1.2
*/
WINDOW *
m_initscr() {
reg char *sp;
# ifdef DEBUG
if (outf == NULL) {
outf = fopen("trace", "w");
if (outf == NULL) {
perror("trace");
exit(-1);
}
}
#endif
if (isatty(2)) {
if ((sp = getenv("TERM")) == NULL)
sp = Def_term;
# ifdef DEBUG
if(outf) fprintf(outf, "INITSCR: term = %s\n", sp);
# endif
}
else {
sp = Def_term;
}
(void) m_newterm(sp, stdout, stdin);
return stdscr;
}
struct screen *
m_newterm(type, outfd, infd)
char *type;
FILE *outfd, *infd;
{
int m_tstp();
struct screen *scp;
struct screen *_new_tty();
extern int _endwin;
#ifdef DEBUG
if(outf) fprintf(outf, "NEWTERM() isatty(2) %d, getenv %s\n",
isatty(2), getenv("TERM"));
# endif
SP = (struct screen *) calloc(1, sizeof (struct screen));
SP->term_file = outfd;
SP->input_file = infd;
savetty();
scp = _new_tty(type, outfd);
# ifdef SIGTSTP
signal(SIGTSTP, m_tstp);
# endif
LINES = lines;
COLS = columns;
# ifdef DEBUG
if(outf) fprintf(outf, "LINES = %d, COLS = %d\n", LINES, COLS);
# endif
curscr = makenew(LINES, COLS, 0, 0);
stdscr = makenew(LINES, COLS, 0, 0);
# ifdef DEBUG
if(outf) fprintf(outf, "SP %x, stdscr %x, curscr %x\n", SP, stdscr, curscr);
# endif
SP->std_scr = stdscr;
SP->cur_scr = curscr;
_endwin = FALSE;
return scp;
}
/*
* Low level interface, for compatibility with old curses.
*/
setterm(type)
char *type;
{
setupterm(type, 1, 0);
}
gettmode()
{
/* No-op included only for upward compatibility. */
}
/*
* This routine sets up a _window buffer and returns a pointer to it.
*/
static WINDOW *
makenew(num_lines, num_cols, begy, begx)
int num_lines, num_cols, begy, begx;
{
reg WINDOW *win;
char *calloc();
# ifdef DEBUG
if(outf) fprintf(outf, "MAKENEW(%d, %d, %d, %d)\n", num_lines, num_cols, begy, begx);
# endif
if ((win = (WINDOW *) calloc(1, sizeof (WINDOW))) == NULL)
return NULL;
# ifdef DEBUG
if(outf) fprintf(outf, "MAKENEW: num_lines = %d\n", num_lines);
# endif
win->_cury = win->_curx = 0;
win->_maxy = num_lines;
win->_maxx = num_cols;
win->_begy = begy;
win->_begx = begx;
win->_scroll = win->_leave = win->_use_idl = FALSE;
return win;
}