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

📄 arcmatch.c

📁 汇编源代码大全
💻 C
字号:
/* * $Header: arcmatch.c,v 1.5 88/06/01 19:41:08 hyc Locked $ *//* * ARC - Archive utility - ARCMATCH *  * Version 2.17, created on 12/17/85 at 20:32:18 *  * (C) COPYRIGHT 1985 by System Enhancement Associates; ALL RIGHTS RESERVED *  * By:  Thom Henderson *  * Description: This file contains service routines needed to maintain an * archive. *  * Language: Computer Innovations Optimizing C86 */#include <stdio.h>#include "arc.h"int	strcmp(), strlen();void	abort();char	*strcpy();intmatch(n, t)			/* test name against template */	char           *n;	/* name to test */	char           *t;	/* template to test against */{#if	MTS	fortran         patbuild(), patmatch(), patfree();	static int      patlen = (-1);	static int      patwork = 0;	static int      patswch = 0;	char            patccid[4];	static char     patchar[2] = "?";	static char     oldtemp[16] = 0;	int             namlen, RETCODE;	if (strcmp(t, oldtemp)) {		if (patwork)			patfree(&patwork);		strcpy(oldtemp, t);		patlen = strlen(oldtemp);		patbuild(oldtemp, &patlen, &patwork, &patswch, patccid, patchar, _retcode RETCODE);		if (RETCODE > 8) {			printf("MTS: patbuild returned %d\n", RETCODE);			abort("bad wildcard in filename");		}	}	namlen = strlen(n);	patmatch(n, &namlen, &patwork, _retcode RETCODE);	switch (RETCODE) {	case 0:		return (1);	case 4:		return (0);	default:		abort("wildcard pattern match failed");	}}#else#if	!UNIX	upper(n);	upper(t);		/* avoid case problems */#endif	/* UNIX */#if	GEMDOS	return(pnmatch(n, t, 0));#else	/* first match name part */	while ((*n && *n != '.') || (*t && *t != '.')) {		if (*n != *t && *t != '?') {	/* match fail? */			if (*t != '*')	/* wildcard fail? */				return 0;	/* then no match */			else {	/* else jump over wildcard */				while (*n && *n != '.')					n++;				while (*t && *t != '.')					t++;				break;	/* name part matches wildcard */			}		} else {	/* match good for this char */			n++;	/* advance to next char */			t++;		}	}	if (*n && *n == '.')		n++;		/* skip extension delimiters */	if (*t && *t == '.')		t++;	/* now match name part */	while (*n || *t) {		if (*n != *t && *t != '?') {	/* match fail? */			if (*t != '*')	/* wildcard fail? */				return 0;	/* then no match */			else				return 1;	/* else good enough */		} else {	/* match good for this char */			n++;	/* advance to next char */			t++;		}	}	return 1;		/* match worked */#endif	/* GEMDOS */}#endifvoidrempath(nargs, arg)		/* remove paths from filenames */	int             nargs;	/* number of names */	char           *arg[];	/* pointers to names */{	char           *i, *rindex();	/* string index, reverse indexer */	int             n;	/* index */	for (n = 0; n < nargs; n++) {	/* for each supplied name */		if (!(i = rindex(arg[n], '\\')))	/* search for end of							 * path */			if (!(i = rindex(arg[n], '/')))				i = rindex(arg[n], ':');		if (i)		/* if path was found */			arg[n] = i + 1;	/* then skip it */	}}

⌨️ 快捷键说明

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