1: #ifndef lint
2: static char sccsid[] = "@(#)getargs.c 5.1 (Berkeley) 7/2/83";
3: #endif
4:
5: #include <stdio.h>
6:
7: /*******
8: * getargs(s, arps)
9: * char *s, *arps[];
10: *
11: * getargs - this routine will generate a vector of
12: * pointers (arps) to the substrings in string "s".
13: * Each substring is separated by blanks and/or tabs.
14: *
15: * If FANCYARGS is defined, you get the following:
16: * Strings containing blanks may be specified by quoting,
17: * in a manner similar to using the shell.
18: * Control characters are entered by ^X where X is any
19: * character; ^? gets you a rubout and ^^ is a real ^.
20: * Warning (rti!trt): I doubt FANCYARGS is wise, since getargs
21: * is used all over the place. Its features may be useful
22: * but a separate fancy_getargs() should be called instead.
23: *
24: * return - the number of subfields.
25: */
26:
27: getargs(s, arps)
28: register char *s;
29: char *arps[];
30: {
31: register int i;
32: #ifdef FANCYARGS
33: register char *sp;
34: register char qchar;
35: #endif
36:
37: i = 0;
38: #ifndef FANCYARGS
39: for (;;) {
40: arps[i] = NULL;
41: while (*s == ' ' || *s == '\t')
42: *s++ = '\0';
43: if (*s == '\n')
44: *s = '\0';
45: if (*s == '\0')
46: break;
47: arps[i++] = s++;
48: while (*s != '\0' && *s != ' '
49: && *s != '\t' && *s != '\n')
50: s++;
51: }
52: #else
53: for (;;) {
54: while (*s == ' ' || *s == '\t')
55: ++s;
56: if (*s == '\n' || *s == '\0')
57: break;
58: arps[i++] = sp = s;
59: qchar = 0;
60: while(*s != '\0' && *s != '\n') {
61: if (qchar == 0 && (*s == ' ' || *s == '\t')) {
62: ++s;
63: break;
64: }
65: switch(*s) {
66: default:
67: *sp++ = *s++;
68: break;
69: case '^':
70: if(*++s == '^')
71: *sp++ = '^';
72: else if(*s == '?')
73: *sp++ = 0177;
74: else
75: *sp++ = *s & 037;
76: s++;
77: break;
78: case '"':
79: case '\'':
80: if(qchar == *s) {
81: qchar = 0;
82: ++s;
83: break;
84: }
85: if(qchar)
86: *sp++ = *s++;
87: else
88: qchar = *s++;
89: break;
90: }
91: }
92: *sp++ = 0;
93: }
94: arps[i] = NULL;
95: #endif
96: return(i);
97: }
Defined functions
Defined variables
sccsid
defined in line
2;
never used