slk_set.c

来自「操作系统SunOS 4.1.3版本的源码」· C语言 代码 · 共 64 行

C
64
字号
/*	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[] = "@(#)slk_set.c 1.1 92/07/30 SMI"; /* from S5R3.1 1.4 */#endif#include	"curses_inc.h"/* * Set a soft label. * * n:	label number * lab:	the string * f:	0, 1, 2 for left, center, right-justification */slk_set(n, lab, f)int	n;char	*lab;int	f;{    register	SLK_MAP	*slk = SP->slk;    register	int	len, slklen = slk->_len, left;    char		*cp, nlab[LABLEN + 1];    if ((slk == NULL) || f < 0 || f > 2 || n < 1 || n > slk->_num)	return (ERR);    /* 0-indexing internally */    n--;    if (lab == NULL)	lab = "";    /* chop lengthy label */    if ((len = strlen(lab)) > slklen)	lab[len = slklen] = '\0';    /* make the new display label */    for (cp = nlab + slklen - 1; cp >= nlab; cp--)	*cp = ' ';    nlab[slklen] = '\0';    if (f == 0)	left = 0;    else	left = (slklen - len) / ((f == 1) ? 2 : 1);    (void) memcpy(nlab + left, lab, len);    if (strcmp(slk->_ldis[n], nlab) != 0)    {	(void) memcpy(slk->_lval[n], lab, len + 1);	(void) memcpy(slk->_ldis[n], nlab, slklen + 1);	slk->_changed = slk->_lch[n] = TRUE;    }    return (OK);}

⌨️ 快捷键说明

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