V7M/src/cmd/uucp/getprm.c

Compare this file to the similar file:
Show the results in this format:

#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);
}