1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-12-05 17:31:19 +01:00

zsh-workers/8749

This commit is contained in:
Tanaka Akira 1999-11-23 14:24:39 +00:00
parent 003d108896
commit 616d348e39
2 changed files with 32 additions and 13 deletions

View file

@ -941,13 +941,17 @@ ca_get_opt(Cadef d, char *line, int full, char **end)
{
Caopt p;
if (full) {
/* The full string has to be an option. */
/* The full string may be an option. */
for (p = d->opts; p; p = p->next)
if (p->active && !strcmp(p->name, line))
return p;
} else {
for (p = d->opts; p; p = p->next)
if (p->active && !strcmp(p->name, line)) {
if (end)
*end = line + strlen(line);
return p;
}
if (!full) {
/* The string from the line probably only begins with an option. */
for (p = d->opts; p; p = p->next)
if (p->active && ((!p->args || p->type == CAO_NEXT) ?
@ -1160,7 +1164,7 @@ ca_parse_line(Cadef d)
} LASTALLOC;
ca_inactive(d, state.curopt->xor);
/* Collect the argument strings. MAybe. */
/* Collect the argument strings. Maybe. */
if (state.def &&
(state.curopt->type == CAO_DIRECT ||
@ -1431,7 +1435,7 @@ bin_comparguments(char *nam, char **args, char *ops, int func)
return 1;
}
case 'O':
if (ca_laststate.opt) {
if (ca_laststate.opt || (ca_laststate.doff && ca_laststate.def)) {
LinkList next = newlinklist();
LinkList direct = newlinklist();
LinkList odirect = newlinklist();
@ -1484,7 +1488,8 @@ bin_comparguments(char *nam, char **args, char *ops, int func)
return 1;
}
case 's':
if (ca_laststate.d->single && ca_laststate.singles) {
if (ca_laststate.d->single && ca_laststate.singles &&
ca_laststate.opt) {
setsparam(args[1],
ztrdup(ca_laststate.ddef ?
(ca_laststate.ddef->type == CAO_DIRECT ?