mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00: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:
		
							
								
								
									
										7
									
								
								cmd.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								cmd.c
									
									
									
									
									
								
							| @@ -105,7 +105,7 @@ cmd_parse(int argc, char **argv, char **cause) | ||||
| 	const struct cmd_entry **entryp, *entry; | ||||
| 	struct cmd	        *cmd; | ||||
| 	char			 s[BUFSIZ]; | ||||
| 	int			 opt; | ||||
| 	int			 opt, ambiguous = 0; | ||||
|  | ||||
| 	*cause = NULL; | ||||
| 	if (argc == 0) { | ||||
| @@ -117,6 +117,7 @@ cmd_parse(int argc, char **argv, char **cause) | ||||
| 	for (entryp = cmd_table; *entryp != NULL; entryp++) { | ||||
| 		if ((*entryp)->alias != NULL && | ||||
| 		    strcmp((*entryp)->alias, argv[0]) == 0) { | ||||
| 			ambiguous = 0; | ||||
| 			entry = *entryp; | ||||
| 			break; | ||||
| 		} | ||||
| @@ -124,13 +125,15 @@ cmd_parse(int argc, char **argv, char **cause) | ||||
| 		if (strncmp((*entryp)->name, argv[0], strlen(argv[0])) != 0) | ||||
| 			continue; | ||||
| 		if (entry != NULL) | ||||
| 			goto ambiguous; | ||||
| 			ambiguous = 1; | ||||
| 		entry = *entryp; | ||||
|  | ||||
| 		/* Bail now if an exact match. */ | ||||
| 		if (strcmp(entry->name, argv[0]) == 0) | ||||
| 			break; | ||||
| 	} | ||||
| 	if (ambiguous) | ||||
| 		goto ambiguous; | ||||
| 	if (entry == NULL) { | ||||
| 		xasprintf(cause, "unknown command: %s", argv[0]); | ||||
| 		return (NULL); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Nicholas Marriott
					Nicholas Marriott