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

📄 dupwin.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[] = "@(#)dupwin.c 1.1 92/07/30 SMI"; /* from S5R3.1 1.5 */#endif#include	"curses_inc.h"/* * Duplicate a window. * * SS:	calling makenew to allocate a new window is wastefull, since *	makenew initializes all the variables, and then we re-initialize *	the desired values to these variables. */WINDOW	*dupwin(win)register	WINDOW	*win;{    register	WINDOW	*new;    register	int	i, nlines = win->_maxy, ncolumns = win->_maxx,			line_size = nlines * sizeof (short);    register	chtype	**wincp, **newcp;    /* allocate storage for new window and do block copy of old one into new */     if ((new = (WINDOW *) malloc(sizeof (WINDOW))) == NULL)	 goto out0;    (void) memcpy(new, win, sizeof (WINDOW));    /* allocate storage for "malloced" fields of the new window */    if ((new->_firstch = (short *) malloc((unsigned) 2 * line_size)) == NULL)         goto out1;    else 	win->_lastch = win->_firstch + nlines;    if ((new->_y = (chtype **) malloc(nlines * sizeof (chtype *))) == NULL)    {	/*	 * We put the free's here rather than after the image call, this	 * is because _image free's all the rest of the malloc'ed areas.	 */	free((char *) new->_firstch);out1:	free((char *) new);        goto out0;    }    if (_image(new) == ERR)    {out0:	curs_errno = CURS_BAD_MALLOC;#ifdef	DEBUG	strcpy(curs_parm_err, "dupwin");	curserr();#endif	/* DEBUG */	return ((WINDOW *) NULL);    }    /* copy information from "malloced" areas of the old window into new */    wincp = win->_y;    newcp = new->_y;    ncolumns *= sizeof(chtype);    for (i = 0; i < nlines; ++i, ++wincp, ++newcp)	(void) memcpy((char *) *newcp, (char *) *wincp, ncolumns);    (void) memcpy((char *) new->_firstch, (char *) win->_firstch, 2 * line_size);    new->_flags |= _WINCHANGED;    new->_ndescs = 0;    /*     * Just like we don't create this window as a subwin if the one     * sent is, we don't create a padwin.  Besides, if the user     * calls p*refresh a padwin will be created then.     */    new->_padwin = new->_parent = (WINDOW *) NULL;    new->_pary = new->_parx = -1;    return (new);}

⌨️ 快捷键说明

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