Research V7 development
[unix-history] / usr / src / cmd / uucp / getprm.c
CommitLineData
0b5c9d30
N
1#include <stdio.h>
2
3#define LQUOTE '('
4#define RQUOTE ')'
5#define NOSYSPART 0
6#define HASSYSPART 1
7
8/*******
9 * char *
10 * getprm(s, prm) get next parameter from s
11 * char *s, *prm;
12 *
13 * return - pointer to next character in s
14 */
15
16char *
17getprm(s, prm)
18char *s, *prm;
19{
20 char *c;
21
22 while (*s == ' ' || *s == '\t' || *s == '\n')
23 s++;
24
25 *prm = '\0';
26 if (*s == '\0')
27 return(NULL);
28
29 if (*s == '>' || *s == '<' || *s == '|'
30 || *s == ';') {
31 *prm++ = *s++;
32 *prm = '\0';
33 return(s);
34 }
35
36 /* look for quoted argument */
37 if (*s == LQUOTE) {
38 if ((c = index(s + 1, RQUOTE)) != NULL) {
39 c++;
40 while (c != s)
41 *prm++ = *s++;
42 *prm = '\0';
43 return(s);
44 }
45 }
46
47 while (*s != ' ' && *s != '\t' && *s != '<'
48 && *s != '>' && *s != '|' && *s != '\0'
49 && *s != ';' && *s != '\n')
50 *prm++ = *s++;
51 *prm = '\0';
52
53 return(s);
54}
55
56/***
57 * split(name, sys, rest) split into system and file part
58 * char *name, *sys, *rest;
59
60 *
61 * return codes:
62 * NOSYSPART
63 * HASSYSPART
64 */
65
66split(name, sys, rest)
67char *name, *sys, *rest;
68{
69 char *c;
70 int i;
71
72 if (*name == LQUOTE) {
73 if ((c = index(name + 1, RQUOTE)) != NULL) {
74 /* strip off quotes */
75 name++;
76 while (c != name)
77 *rest++ = *name++;
78 *rest = '\0';
79 *sys = '\0';
80 return(NOSYSPART);
81 }
82 }
83
84 if ((c = index(name, '!')) == NULL) {
85 strcpy(rest, name);
86 *sys = '\0';
87 return(NOSYSPART);
88 }
89
90 *c = '\0';
91 for (i = 0; i < 7; i++)
92 if ((*sys++ = *name++) == '\0')
93 break;
94
95 strcpy(rest, ++c);
96 return(HASSYSPART);
97}