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:
16: char *
17: getprm(s, prm)
18: char *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:
66: split(name, sys, rest)
67: char *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: }
Defined functions
split
defined in line
66; used 2 times
Defined macros
LQUOTE
defined in line
3; used 2 times
RQUOTE
defined in line
4; used 2 times