Add a non-interactive mode to tinc commands.
Some tinc commands, such as "tinc generate-keys", use the terminal to ask the user for information. This can be bypassed by making sure there is no terminal, which is trivial on *nix but might require jumping through some hoops on Windows depending on how the command is invoked. This commit adds a --batch option that ensures tinc will never ask the user for input, even if it is attached to a terminal.
This commit is contained in:
		
							parent
							
								
									afb175873e
								
							
						
					
					
						commit
						cc9203ee75
					
				
					 1 changed files with 7 additions and 2 deletions
				
			
		|  | @ -75,6 +75,7 @@ char *scriptextension = ""; | |||
| static char *prompt; | ||||
| 
 | ||||
| static struct option const long_options[] = { | ||||
| 	{"batch", no_argument, NULL, 'b'}, | ||||
| 	{"config", required_argument, NULL, 'c'}, | ||||
| 	{"net", required_argument, NULL, 'n'}, | ||||
| 	{"help", no_argument, NULL, 1}, | ||||
|  | @ -100,6 +101,7 @@ static void usage(bool status) { | |||
| 	} else { | ||||
| 		printf("Usage: %s [options] command\n\n", program_name); | ||||
| 		printf("Valid options are:\n" | ||||
| 				"  -b, --batch             Don't ask for anything (non-interactive mode).\n" | ||||
| 				"  -c, --config=DIR        Read configuration options from DIR.\n" | ||||
| 				"  -n, --net=NETNAME       Connect to net NETNAME.\n" | ||||
| 				"      --pidfile=FILENAME  Read control cookie from FILENAME.\n" | ||||
|  | @ -158,6 +160,10 @@ static bool parse_options(int argc, char **argv) { | |||
| 			case 0:   /* long option */ | ||||
| 				break; | ||||
| 
 | ||||
| 			case 'b': | ||||
| 				tty = false; | ||||
| 				break; | ||||
| 
 | ||||
| 			case 'c': /* config file */ | ||||
| 				confbase = xstrdup(optarg); | ||||
| 				confbasegiven = true; | ||||
|  | @ -2439,6 +2445,7 @@ int main(int argc, char *argv[]) { | |||
| 	program_name = argv[0]; | ||||
| 	orig_argv = argv; | ||||
| 	orig_argc = argc; | ||||
| 	tty = isatty(0) && isatty(1); | ||||
| 
 | ||||
| 	if(!parse_options(argc, argv)) | ||||
| 		return 1; | ||||
|  | @ -2469,8 +2476,6 @@ int main(int argc, char *argv[]) { | |||
| 	srand(time(NULL)); | ||||
| 	crypto_init(); | ||||
| 
 | ||||
| 	tty = isatty(0) && isatty(1); | ||||
| 
 | ||||
| 	if(optind >= argc) | ||||
| 		return cmd_shell(argc, argv); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue