printsw.c

来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 52 行

C
52
字号
/* printsw.c - print switches */#include "../h/mh.h"void printsw (substr, swp, prefix)register char  *substr,               *prefix;register struct swit   *swp;{    int     len,	    optno;    register int    i;    register char  *cp,                   *cp1,		   *sp;    char    buf[128];    len = strlen (substr);    for (; swp -> sw; swp++) {	if (!*substr ||		/* null matches all strings */		(ssequal (substr, swp -> sw) && len >= swp -> minchars)) {	    optno = 0;	    if (sp = (&swp[1]) -> sw) /* next switch */		if (!*substr && sp[0] == 'n' && sp[1] == 'o' &&			strcmp (&sp[2], swp -> sw) == 0 && (			((&swp[1]) -> minchars == 0 && swp -> minchars == 0) ||			((&swp[1]) -> minchars == (swp -> minchars) + 2)))		    optno++;	    if (swp -> minchars > 0) {		cp = buf;		*cp++ = '(';		if (optno) {		    (void) strcpy (cp, "[no]");		    cp += strlen (cp);		}		for (cp1 = swp -> sw, i = 0; i < swp -> minchars; i++)		    *cp++ = *cp1++;		*cp++ = ')';		while (*cp++ = *cp1++);		printf ("  %s%s\n", prefix, buf);	    }	    else		if (swp -> minchars == 0)		    printf (optno ? "  %s[no]%s\n" : "  %s%s\n",			    prefix, swp -> sw);	    if (optno)		swp++;	/* skip -noswitch */	}    }}

⌨️ 快捷键说明

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