mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-23 16:43:11 +01:00
Don't let ambiguous commands override an exact alias match: eg if commands
"abc-1", "abc-2", "abc-3" exist and "abc-3" has the alias "abc", "tmux abc" should execute abc-3, not complain about the command being ambiguous. Not a problem at the moment but will be soon.
This commit is contained in:
parent
923ccfa2e8
commit
b4efd1ca89
7
cmd.c
7
cmd.c
@ -105,7 +105,7 @@ cmd_parse(int argc, char **argv, char **cause)
|
|||||||
const struct cmd_entry **entryp, *entry;
|
const struct cmd_entry **entryp, *entry;
|
||||||
struct cmd *cmd;
|
struct cmd *cmd;
|
||||||
char s[BUFSIZ];
|
char s[BUFSIZ];
|
||||||
int opt;
|
int opt, ambiguous = 0;
|
||||||
|
|
||||||
*cause = NULL;
|
*cause = NULL;
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
@ -117,6 +117,7 @@ cmd_parse(int argc, char **argv, char **cause)
|
|||||||
for (entryp = cmd_table; *entryp != NULL; entryp++) {
|
for (entryp = cmd_table; *entryp != NULL; entryp++) {
|
||||||
if ((*entryp)->alias != NULL &&
|
if ((*entryp)->alias != NULL &&
|
||||||
strcmp((*entryp)->alias, argv[0]) == 0) {
|
strcmp((*entryp)->alias, argv[0]) == 0) {
|
||||||
|
ambiguous = 0;
|
||||||
entry = *entryp;
|
entry = *entryp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -124,13 +125,15 @@ cmd_parse(int argc, char **argv, char **cause)
|
|||||||
if (strncmp((*entryp)->name, argv[0], strlen(argv[0])) != 0)
|
if (strncmp((*entryp)->name, argv[0], strlen(argv[0])) != 0)
|
||||||
continue;
|
continue;
|
||||||
if (entry != NULL)
|
if (entry != NULL)
|
||||||
goto ambiguous;
|
ambiguous = 1;
|
||||||
entry = *entryp;
|
entry = *entryp;
|
||||||
|
|
||||||
/* Bail now if an exact match. */
|
/* Bail now if an exact match. */
|
||||||
if (strcmp(entry->name, argv[0]) == 0)
|
if (strcmp(entry->name, argv[0]) == 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (ambiguous)
|
||||||
|
goto ambiguous;
|
||||||
if (entry == NULL) {
|
if (entry == NULL) {
|
||||||
xasprintf(cause, "unknown command: %s", argv[0]);
|
xasprintf(cause, "unknown command: %s", argv[0]);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user