201 |
|
|
202 |
|
for (cp = cmd; *av != NULL; av++) { |
203 |
|
const int n = strlen(*av); |
204 |
< |
if (cp+n >= cmd+(len-3)) { |
205 |
< |
fputs(progname, stderr); |
204 |
> |
if (cp+n >= cmd+(len-3)) |
205 |
|
return(NULL); |
207 |
– |
} |
206 |
|
if (matchany(*av, SPECIALS)) { |
207 |
|
const int quote = |
208 |
|
#ifdef ALTQUOT |
327 |
|
{ |
328 |
|
char *cp = pargs; |
329 |
|
int nparams = 0; |
330 |
+ |
int quot; |
331 |
|
int i; |
332 |
|
|
333 |
|
for ( ; ; ) { |
364 |
|
case 'o': |
365 |
|
if (*cp++ != '=') |
366 |
|
break; |
367 |
+ |
quot = 0; |
368 |
+ |
if ((*cp == '"') | (*cp == '\'')) |
369 |
+ |
quot = *cp++; |
370 |
|
i = 0; |
371 |
< |
while (*cp && !isspace(*cp++)) |
372 |
< |
i++; |
371 |
> |
while (*cp && (quot ? (*cp != quot) : !isspace(*cp))) { |
372 |
> |
i++; cp++; |
373 |
> |
} |
374 |
|
if (!i) |
375 |
|
break; |
376 |
< |
*--cp = '\0'; |
376 |
> |
if (!*cp) { |
377 |
> |
if (quot) |
378 |
> |
break; |
379 |
> |
cp[1] = '\0'; |
380 |
> |
} |
381 |
> |
*cp = '\0'; |
382 |
|
p->outfn = savqstr(cp-i); |
383 |
< |
*cp++ = ' '; |
383 |
> |
*cp++ = quot ? quot : ' '; |
384 |
|
++nparams; |
385 |
|
continue; |
386 |
|
case ' ': |