comparison simtool/dispatch.c @ 116:c8685074c845

fc-simtool command parser: fancier handling of quoted strings
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 28 Jan 2021 03:14:32 +0000
parents 0dcd666292e4
children 06e2d5c60cbd
comparison
equal deleted inserted replaced
115:0dcd666292e4 116:c8685074c845
123 fprintf(stderr, "error: too many arguments\n"); 123 fprintf(stderr, "error: too many arguments\n");
124 return(-1); 124 return(-1);
125 } 125 }
126 if (*cp == '"') { 126 if (*cp == '"') {
127 *ap++ = ++cp; 127 *ap++ = ++cp;
128 while (*cp && *cp != '"') 128 for (;;) {
129 cp++; 129 if (!*cp) {
130 if (*cp != '"') { 130 unterm_qstring: fprintf(stderr,
131 fprintf(stderr,
132 "error: unterminated quoted string\n"); 131 "error: unterminated quoted string\n");
133 return(-1); 132 return(-1);
133 }
134 if (*cp == '"')
135 break;
136 if (*cp++ == '\\') {
137 if (!*cp)
138 goto unterm_qstring;
139 cp++;
140 }
134 } 141 }
135 *cp++ = '\0'; 142 *cp++ = '\0';
136 } else { 143 } else {
137 *ap++ = cp; 144 *ap++ = cp;
138 while (*cp && !isspace(*cp)) 145 while (*cp && !isspace(*cp))