match.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 55 行

C
55
字号
#include	"mk.h"intmatch(char *name, char *template, char *stem){	Rune r;	int n;	while(*name && *template){		n = chartorune(&r, template);		if (PERCENT(r))			break;		while (n--)			if(*name++ != *template++)				return 0;	}	if(!PERCENT(*template))		return 0;	n = strlen(name)-strlen(template+1);	if (n < 0)		return 0;	if (strcmp(template+1, name+n))		return 0;	strncpy(stem, name, n);	stem[n] = 0;	if(*template == '&')		return !charin(stem, "./");	return 1;}voidsubst(char *stem, char *template, char *dest, int dlen){	Rune r;	char *s, *e;	int n;	e = dest+dlen-1;	while(*template){		n = chartorune(&r, template);		if (PERCENT(r)) {			template += n;			for (s = stem; *s; s++)				if(dest < e)					*dest++ = *s;		} else			while (n--){				if(dest < e)					*dest++ = *template;				template++;			}	}	*dest = 0;}

⌨️ 快捷键说明

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