⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makenew.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
/*	Copyright (c) 1984 AT&T	*//*	  All Rights Reserved  	*//*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*//*	The copyright notice above does not evidence any   	*//*	actual or intended publication of such source code.	*/#ifndef lintstatic	char sccsid[] = "@(#)makenew.c 1.1 92/07/30 SMI"; /* from S5R3.1 1.7 */#endif#include	"curses_inc.h"/* This routine sets up a window buffer and returns a pointer to it. */WINDOW	*_makenew(nlines, ncols, begy, begx)register	int	nlines, ncols;int			begy, begx;{    /* order the register allocations against highest usage */    register	WINDOW	*win;#ifdef	DEBUG    if (outf)	fprintf(outf, "MAKENEW(%d, %d, %d, %d)\n", nlines, ncols, begy, begx);#endif	/* DEBUG */    if ((win = (WINDOW *) malloc(sizeof (WINDOW))) == NULL)	goto out_no_win;    if ((win->_y = (chtype **) malloc(nlines * sizeof (chtype *))) == NULL)	goto out_win;#ifdef	_VR3_COMPAT_CODE    if ((_y16update) &&	((win->_y16 = (_ochtype **) calloc(1, nlines * sizeof (_ochtype *))) == NULL))    {	goto out_y16;    }#endif	/* _VR3_COMPAT_CODE */    if ((win->_firstch = (short *) malloc(2 * nlines * sizeof(short))) == NULL)    {#ifdef	_VR3_COMPAT_CODE	free((char *) win->_y16);out_y16:#endif	/* _VR3_COMPAT_CODE */	free((char *) win->_y);out_win:	free((char *) win);out_no_win:	curs_errno = CURS_BAD_MALLOC;#ifdef	DEBUG	strcpy(curs_parm_err, "_makenew");#endif	/* DEBUG */	return ((WINDOW *) NULL);    }    else	win->_lastch = win->_firstch + nlines;    win->_cury = win->_curx = 0;    win->_maxy = nlines;    win->_maxx = ncols;    win->_begy = begy;    win->_begx = begx;    win->_clear = (((begy + SP->Yabove + begx) == 0) &&	(nlines >= (LINES + SP->Yabove)) && (ncols >= COLS));    win->_leave = win->_scroll = win->_use_idl = win->_use_keypad =	win->_notimeout = win->_immed = win->_sync = FALSE;    win->_use_idc = TRUE;    win->_ndescs = win->_tmarg = 0;    win->_bmarg = nlines - 1;    win->_bkgd = _BLNKCHAR;    win->_delay = win->_parx = win->_pary = -1;    win->_attrs = A_NORMAL;    win->_flags = _WINCHANGED;    win->_parent = win->_padwin = (WINDOW *) NULL;    (void) memset((char *) win->_firstch, 0, (int) (nlines * sizeof(short)));    {	register	short	*lastch = win->_lastch,				*elastch = lastch + nlines;	ncols--;	while (lastch < elastch)	    *lastch++ = ncols;    }#ifdef	DEBUG    if(outf)    {	fprintf(outf, "MAKENEW: win->_clear = %d\n", win->_clear);	fprintf(outf, "MAKENEW: win->_flags = %0.2o\n", win->_flags);	fprintf(outf, "MAKENEW: win->_maxy = %d\n", win->_maxy);	fprintf(outf, "MAKENEW: win->_maxx = %d\n", win->_maxx);	fprintf(outf, "MAKENEW: win->_begy = %d\n", win->_begy);	fprintf(outf, "MAKENEW: win->_begx = %d\n", win->_begx);    }#endif	/* DEBUG */    return (win);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -