Commit 232e7990 232e7990ceb77dcf19c064f3960b0107c200f34c by Sergey Poznyakoff

(parse_opt): Try to catch arguments separated from

the option by whitespace. Solution proposed by Helmut Leitner.
Avoid queueing multiple "set mode=send" options.
1 parent b4c360d8
...@@ -82,6 +82,12 @@ parse_opt (int key, char *arg, struct argp_state *state) ...@@ -82,6 +82,12 @@ parse_opt (int key, char *arg, struct argp_state *state)
82 case 'f': 82 case 'f':
83 if (arg != NULL) 83 if (arg != NULL)
84 args->file = arg; 84 args->file = arg;
85 /* People often tend to separate -f option from its argument
86 with a whitespace. This heuristics tries to catch the
87 error: */
88 else if (state->next < state->argc
89 && state->argv[state->next][0] != '-')
90 args->file = state->argv[state->next++];
85 else 91 else
86 { 92 {
87 int len; 93 int len;
...@@ -141,22 +147,11 @@ parse_opt (int key, char *arg, struct argp_state *state) ...@@ -141,22 +147,11 @@ parse_opt (int key, char *arg, struct argp_state *state)
141 break; 147 break;
142 148
143 case ARGP_KEY_ARG: 149 case ARGP_KEY_ARG:
144 /* People often tend to separate -f option from its argument
145 with a whitespace. This heuristics tries to catch the
146 error: */
147
148 if (args->file)
149 {
150 args->file = arg;
151 }
152 else
153 {
154 args->args = realloc (args->args, 150 args->args = realloc (args->args,
155 sizeof (char *) * (state->arg_num + 2)); 151 sizeof (char *) * (state->arg_num + 2));
156 args->args[state->arg_num] = arg; 152 args->args[state->arg_num] = arg;
157 args->args[state->arg_num + 1] = NULL; 153 args->args[state->arg_num + 1] = NULL;
158 util_cache_command (&command_list, "set mode=send"); 154 args->send_mode = 1;
159 }
160 break; 155 break;
161 156
162 case ARGP_KEY_FINI: 157 case ARGP_KEY_FINI:
......