Skip to content

Commit 6194f26

Browse files
author
Rob Sanders
committed
Revert "Fix issue where tab completion on 'OPTIONAL_FLAG' items only matched name, not user supplied completor/validators"
This reverts commit 6925262.
1 parent 41fbbb4 commit 6194f26

2 files changed

Lines changed: 10 additions & 33 deletions

File tree

clitest.c

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -307,32 +307,8 @@ int side_length_validator(struct cli_def *cli, const char *name, const char *val
307307
return rc;
308308
}
309309

310-
const char *TransparentColors[] = {
311-
"clear",
312-
"transparent",
313-
"see-through",
314-
};
315-
316-
int transparent_completor(struct cli_def *cli, const char *name, const char *word, struct cli_comphelp *comphelp) {
317-
// Attempt to show matches against the following color strings
318-
const char **color;
319-
int rc = CLI_OK;
320-
printf("transparent_completor called with <%s>\n", word);
321-
for (color = TransparentColors; *color && (rc == CLI_OK); color++) {
322-
if (!word || !strncmp(*color, word, strlen(word))) {
323-
rc = cli_add_comphelp_entry(comphelp, *color);
324-
}
325-
}
326-
return rc;
327-
}
328310
int transparent_validator(struct cli_def *cli, const char *name, const char *value) {
329-
const char **color;
330-
int rc = CLI_ERROR;
331-
printf("color_validator called for %s\n", name);
332-
for (color = TransparentColors; *color; color++) {
333-
if (!strcmp(value, *color)) return CLI_OK;
334-
}
335-
return rc;
311+
return strcasecmp("transparent", value) ? CLI_ERROR : CLI_OK;
336312
}
337313

338314
int check1_validator(struct cli_def *cli, UNUSED(const char *name), UNUSED(const char *value)) {
@@ -443,7 +419,7 @@ void run_child(int x) {
443419
"Calculate perimeter of polygon\nhas embedded "
444420
"newline\nand_a_really_long_line_that_is_much_longer_than_80_columns_to_show_that_wrap_case");
445421
o = cli_register_optarg(c, "transparent", CLI_CMD_OPTIONAL_FLAG, PRIVILEGE_UNPRIVILEGED, MODE_EXEC,
446-
"Set transparent flag", transparent_completor, transparent_validator, NULL);
422+
"Set transparent flag", NULL, NULL, NULL);
447423
cli_optarg_addhelp(o, "transparent", "(any case)set to transparent");
448424

449425
cli_register_optarg(

libcli.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3127,17 +3127,17 @@ int cli_int_execute_pipeline(struct cli_def *cli, struct cli_pipeline *pipeline)
31273127
* Attempt quick dirty wrapping of helptext taking into account the offset from name, embedded
31283128
* cr/lf in helptext, and trying to split on last white-text before the right margin. If there is
31293129
* no identifiable whitespace to split on, then the split will be done on the last character to fit
3130-
* that line (currently max line with is 80 characters).
3131-
* The firstcolumn width will be a greater of 22 characters or the width of nameptr, which ever is
3130+
* that line (currently max line with is 80 characters).
3131+
* The firstcolumn width will be a greater of 22 characters or the width of nameptr, which ever is
31323132
* greater, and will be offset from the rest of the line by one space. However, if nameptr is
31333133
* greater than 22 characters it will be put on a line by itself. The first column will be formatted
31343134
* as spaces (22 of em) for all subsequent lines.
31353135
.
31363136
* This routine assumes any 'indenting' of the nameptr field has already been done, and is solely
3137-
* concerned about wrapping the combination of nameptr and helpptr to look 'nice'.
3137+
* concerned about wrapping the combination of nameptr and helpptr to look 'nice'.
31383138
*/
3139-
3140-
#define MAX(a, b) ((a) > (b) ? (a) : (b))
3139+
3140+
#define MAX(a,b) ((a) >(b) ? (a) : (b))
31413141
#define MAXWIDTHCOL1 22
31423142

31433143
void cli_int_wrap_help_line(char *nameptr, char *helpptr, struct cli_comphelp *comphelp) {
@@ -3164,8 +3164,8 @@ void cli_int_wrap_help_line(char *nameptr, char *helpptr, struct cli_comphelp *c
31643164
nameptr = emptystring;
31653165
namewidth = MAXWIDTHCOL1;
31663166
}
3167-
namewidth = MAX(MAXWIDTHCOL1, strlen(nameptr));
3168-
availwidth = maxwidth - namewidth - 1; // subtract 1 for space separating col1 from rest of line
3167+
namewidth = MAX(MAXWIDTHCOL1,strlen(nameptr));
3168+
availwidth = maxwidth - namewidth -1; // subtract 1 for space separating col1 from rest of line
31693169
toprint = strlen(helpptr);
31703170
if (toprint > availwidth) {
31713171
toprint = availwidth;
@@ -3213,6 +3213,7 @@ static void cli_get_optarg_comphelp(struct cli_def *cli, struct cli_optarg *opta
32133213
if (!(anchor_word && !strncmp(anchor_word, optarg->name, strlen(anchor_word)))) {
32143214
delim_start = DELIM_OPT_START;
32153215
delim_end = DELIM_OPT_END;
3216+
get_completions = NULL; // No point, completor of field is the name itself
32163217
}
32173218
} else if (optarg->flags & CLI_CMD_HYPHENATED_OPTION) {
32183219
delim_start = DELIM_OPT_START;

0 commit comments

Comments
 (0)