| 104 | } |
| 105 | |
| 106 | bool parse_early_args_incomplete(int *argc, char ***argv, ...) |
| 107 | { |
| 108 | char **a; |
| 109 | va_list ap; |
| 110 | |
| 111 | va_start(ap, argv); |
| 112 | *argc = 1; |
| 113 | a = malloc(sizeof(*a) * (*argc + 1)); |
| 114 | a[0] = (*argv)[0]; |
| 115 | while ((a[*argc] = va_arg(ap, char *)) != NULL) { |
| 116 | (*argc)++; |
| 117 | a = realloc(a, sizeof(*a) * (*argc + 1)); |
| 118 | } |
| 119 | |
| 120 | if (allocated) |
| 121 | free(*argv); |
| 122 | |
| 123 | *argv = a; |
| 124 | allocated = true; |
| 125 | |
| 126 | return opt_early_parse_incomplete(*argc, *argv, save_err_output); |
| 127 | } |
| 128 | |
| 129 | struct opt_table short_table[] = { |
| 130 | /* Short opts, different args. */ |
no test coverage detected