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

📄 delkey.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[] = "@(#)delkey.c 1.1 92/07/30 SMI"; /* from S5R3.1 1.3 */#endif#include	"curses_inc.h"/* Delete keys matching pat or key from the key map. */delkey(sends, keyval)char	*sends;int	keyval;{    register	_KEY_MAP	*kp, **kpp = cur_term->_keys, **fpp, **dpp;    register	int     	mask = 0, cmp, numkeys = cur_term->_ksz;    int				counter = 0, i, num_deleted_keys = 0;    short			*lkorder = &(cur_term->_lastkey_ordered),				*first_macro = &(cur_term->_first_macro),				*lmorder = &(cur_term->_lastmacro_ordered);    /* for ease of determination of key to delete */    if (sends)	mask |= 01;    if (keyval >= 0)	mask |= 02;    /* check each key */    while (++counter < numkeys)    {	kp = *kpp;	cmp = 0;	if (sends && (strcmp(sends, kp->_sends) == 0))	    cmp |= 01;	if (kp->_keyval == keyval)	    cmp |= 02;	/* found one to delete */	if (cmp == mask)	{	    num_deleted_keys++;	    /*	     * If it was an externally created key, then the address	     * of the sequence will be right after the structure.	     * See the malloc in newkey.	     */	    if (kp->_sends == ((char *) kp + sizeof(_KEY_MAP)))		free(kp);	    /* shift left other keys */	    i = (numkeys - counter) - 1;	    for (fpp = kpp, dpp = kpp + 1; i > 0; i--, fpp++, dpp++)		*fpp = *dpp;	    if (counter <= *lmorder)	    {		if (counter < *first_macro)		{		    if (counter <= *lkorder)			(*lkorder)--;		    (*first_macro)--;		}		(*lmorder)--;	    }	}	else	    kpp++;    }/* Check if we've crossed boundary and/or hit 0 */    if ((cur_term->_ksz -= num_deleted_keys) == 0)	delkeymap(cur_term);    else	cur_term->_keys = (_KEY_MAP **) realloc ((char *) cur_term->_keys, (unsigned) cur_term->_ksz);    return (num_deleted_keys);}

⌨️ 快捷键说明

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