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

📄 expand.c

📁 MTOOLS version 2.0 Mtools is a public domain collection of programs to allow Unix systems t
💻 C
字号:
/* * Do filename expansion with the shell.  Returns a pointer to a * static area. */#define EXPAND_BUF	2048#include <stdio.h>char *expand(input)char *input;{	FILE *fp, *popen();	int last;	char buf[256], *strpbrk(), *strcpy();	static char ans[EXPAND_BUF];	if (input == NULL)		return(NULL);	if (*input == '\0')		return("");					/* any thing to expand? */	if (!strpbrk(input, "$*{}[]\\?~")) {		strcpy(ans, input);		return(ans);	}					/* popen an echo */	sprintf(buf, "echo %s", input);	fp = popen(buf, "r");	fgets(ans, EXPAND_BUF, fp);	pclose(fp);	if (!strlen(ans)) {		strcpy(ans, input);		return(ans);	}	/*	 * A horrible kludge...  if the last character is not a line feed,	 * then the csh has returned an error message.  Otherwise zap the	 * line feed.	 */	last = strlen(ans) - 1;	if (ans[last] != '\n') {		strcpy(ans, input);		return(ans);	}	else		ans[last] = '\0';	return(ans);}/* * Miscellaneous routines probably missing from Bezerkely */#ifdef BSD/* * Return ptr to first occurrence of any character from `brkset' * in the character string `string'; NULL if none exists. */char *strpbrk(string, brkset)register char *string, *brkset;{	register char *p;	if (!string || !brkset)		return(0);	do {		for (p = brkset; *p != '\0' && *p != *string; ++p)			;		if (*p != '\0')			return(string);	}	while (*string++);	return(0);}/* * Copies the character c, n times to string s */char *memset(s, c, n)char *s, c;int n;{	char *s1 = s;	while (n > 0) {		--n;		*s++ = c;	}	return(s1);}/* * Copy contents of memory (with possible overlapping). */char *memcpy(s1, s2, n)char *s1, *s2;int n;{	bcopy(s2, s1, n);	return(s1);}#endif /* BSD */

⌨️ 快捷键说明

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