Commit | Line | Data |
---|---|---|
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 | ||
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 | } |