getprm.c

来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 98 行

C
98
字号
#include <stdio.h>#define LQUOTE	'('#define RQUOTE ')'#define NOSYSPART	0#define HASSYSPART	1/******* *	char * *	getprm(s, prm)	get next parameter from s *	char *s, *prm; * *	return - pointer to next character in s */char *getprm(s, prm)char *s, *prm;{	char *c;	while (*s == ' ' || *s == '\t' || *s == '\n')		s++;	*prm = '\0';	if (*s == '\0')		return(NULL);	if (*s == '>' || *s == '<' || *s == '|'	|| *s == ';') {		*prm++ = *s++;		*prm = '\0';		return(s);	}	/* look for quoted argument */	if (*s == LQUOTE) {		if ((c = index(s + 1, RQUOTE)) != NULL) {			c++;			while (c != s)				*prm++ = *s++;			*prm = '\0';			return(s);		}	}	while (*s != ' ' && *s != '\t' && *s != '<'	&& *s != '>' && *s != '|' && *s != '\0'	&& *s != ';' && *s != '\n')		*prm++ = *s++;	*prm = '\0';	return(s);}/*** *	split(name, sys, rest)	split into system and file part *	char *name, *sys, *rest; * *	return codes: *		NOSYSPART *		HASSYSPART */split(name, sys, rest)char *name, *sys, *rest;{	char *c;	int i;	if (*name == LQUOTE) {		if ((c = index(name + 1, RQUOTE)) != NULL) {		/* strip off quotes */			name++;			while (c != name)				*rest++ = *name++;			*rest = '\0';			*sys = '\0';			return(NOSYSPART);		}	}	if ((c = index(name, '!')) == NULL) {		strcpy(rest, name);		*sys = '\0';		return(NOSYSPART);	}	*c = '\0';	for (i = 0; i < 7; i++)		if ((*sys++ = *name++) == '\0')			break;	strcpy(rest, ++c);	return(HASSYSPART);}

⌨️ 快捷键说明

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