1: #ifndef lint
2: static char sccsid[] = "@(#)getprm.c 5.1 (Berkeley) 7/2/83";
3: #endif
4:
5: #include <stdio.h>
6:
7: #define LQUOTE '('
8: #define RQUOTE ')'
9: #define NOSYSPART 0
10: #define HASSYSPART 1
11:
12:
13: /*******
14: * char *
15: * getprm(s, prm) get next parameter from s
16: * char *s, *prm;
17: *
18: * return - pointer to next character in s
19: */
20:
21: char *
22: getprm(s, prm)
23: register char *s, *prm;
24: {
25: register char *c;
26: char *index();
27:
28: while (*s == ' ' || *s == '\t' || *s == '\n')
29: s++;
30:
31: *prm = '\0';
32: if (*s == '\0')
33: return(NULL);
34:
35: if (*s == '>' || *s == '<' || *s == '|'
36: || *s == ';' || *s == '&') {
37: *prm++ = *s++;
38: *prm = '\0';
39: return(s);
40: }
41:
42: /* look for quoted argument */
43: if (*s == LQUOTE) {
44: if ((c = index(s + 1, RQUOTE)) != NULL) {
45: c++;
46: while (c != s)
47: *prm++ = *s++;
48: *prm = '\0';
49: return(s);
50: }
51: }
52:
53: /* look for ` ` string */
54: if (*s == '`') {
55: if ((c = index(s + 1, '`')) != NULL) {
56: c++;
57: while (c != s)
58: *prm++ = *s++;
59: *prm = '\0';
60: return(s);
61: }
62: }
63:
64: while (*s != ' ' && *s != '\t' && *s != '<'
65: && *s != '>' && *s != '|' && *s != '\0'
66: && *s != '&' && *s != ';' && *s != '\n')
67: *prm++ = *s++;
68: *prm = '\0';
69:
70: return(s);
71: }
72:
73: /***
74: * split(name, sys, rest) split into system and file part
75: * char *name, *sys, *rest;
76: *
77: * return codes:
78: * NOSYSPART
79: * HASSYSPART
80: */
81:
82: split(name, sys, rest)
83: register char *name, *rest;
84: char *sys;
85: {
86: register char *c;
87: char *index(), *strcpy();
88: int i;
89:
90: if (*name == LQUOTE) {
91: if ((c = index(name + 1, RQUOTE)) != NULL) {
92: /* strip off quotes */
93: name++;
94: while (c != name)
95: *rest++ = *name++;
96: *rest = '\0';
97: *sys = '\0';
98: return(NOSYSPART);
99: }
100: }
101:
102: if ((c = index(name, '!')) == NULL) {
103: strcpy(rest, name);
104: *sys = '\0';
105: return(NOSYSPART);
106: }
107:
108: *c = '\0';
109: for (i = 0; i < 7; i++)
110: if ((*sys++ = *name++) == '\0')
111: break;
112:
113: strcpy(rest, ++c);
114: return(HASSYSPART);
115: }
Defined functions
split
defined in line
82; used 2 times
Defined variables
sccsid
defined in line
2;
never used
Defined macros
LQUOTE
defined in line
7; used 2 times
RQUOTE
defined in line
8; used 2 times