initctl: Introduce -b[atch] mode for non-interactive use

This patch introduces a new option to initctl; -b, --batch skips
screen_init(), which might otherwise leak ANSI screen resize codes
to the console.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
Joachim Nilsson committed 2018-02-16 10:06:37 +01:00
1 parent 0a643953c0
commit 7fdb280712
1 file changed
+10 -3
+10 -3
View File
@@ -522,6 +522,7 @@ static int usage(int rc)
"Usage: %s [OPTIONS] [COMMAND]\n" "Usage: %s [OPTIONS] [COMMAND]\n"
"\n" "\n"
"Options:\n" "Options:\n"
" -b, --batch Batch mode, no screen size probing\n"
" -v, --verbose Verbose output\n" " -v, --verbose Verbose output\n"
" -h, --help This help text\n" " -h, --help This help text\n"
"\n" "\n"
@@ -567,7 +568,7 @@ static int do_help(char *arg)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int c; int interactive = 1, c;
char *cmd, arg[120]; char *cmd, arg[120];
struct command command[] = { struct command command[] = {
{ "debug", toggle_debug }, { "debug", toggle_debug },
@@ -598,6 +599,7 @@ int main(int argc, char *argv[])
{ NULL, NULL } { NULL, NULL }
}; };
struct option long_options[] = { struct option long_options[] = {
{"batch", 0, NULL, 'b'},
{"help", 0, NULL, 'h'}, {"help", 0, NULL, 'h'},
{"debug", 0, NULL, 'd'}, {"debug", 0, NULL, 'd'},
{"verbose", 0, NULL, 'v'}, {"verbose", 0, NULL, 'v'},
@@ -605,8 +607,12 @@ int main(int argc, char *argv[])
}; };
progname(argv[0]); progname(argv[0]);
while ((c = getopt_long(argc, argv, "h?v", long_options, NULL)) != EOF) { while ((c = getopt_long(argc, argv, "bh?v", long_options, NULL)) != EOF) {
switch(c) { switch(c) {
case 'b':
interactive = 0;
break;
case 'h': case 'h':
case '?': case '?':
return usage(0); return usage(0);
@@ -617,7 +623,8 @@ int main(int argc, char *argv[])
} }
} }
screen_init(); if (interactive)
screen_init();
if (optind >= argc) if (optind >= argc)
return show_status(NULL); return show_status(NULL);