} else {
if (*e == '=')
w = e+1;
+ else if (args[n].type != flag) {
+ w = take_word(&line);
+ if (!w) {
+ asprintf(error,
+ "Missing value for --%s", t);
+ break;
+ }
+ }
rv[n+offset] = w;
rv[n2+offset] = w;
}
args = lafs_args;
arglist = parse_line(&args, line, &offset, &last, &error);
+ if (last >= 0 &&
+ error && strncmp(error, "Missing value for", 17) == 0) {
+ free(error);
+ error = 0;
+ } else if (!(start && rl_line_buffer[start-1] == '='))
+ last = -1;
+
if (error) {
printf("\n *** %s ***\n", error);
free(error);
goto after_message;
}
- if (start && rl_line_buffer[start-1] == '=' &&
- last >= 0 && arglist[last+offset] &&
- ((char*)arglist[last+offset])[0] == '\0')
+ if (last >= 0 && (arglist[last+offset] == NULL ||
+ ((char*)arglist[last+offset])[0] == '\0'))
p = last;
else {
last = -1;