[PATCH] opentvt wait addition

Denys Vlasenko vda.linux at googlemail.com
Wed Mar 26 13:54:02 PDT 2008


On Wednesday 26 March 2008 15:24, James Simmons wrote:
> 
> This patch allows openvt to wait for command completion.
> 
> 
> diff -urwN busybox.orig/console-tools/openvt.c busybox/console-tools/openvt.c
> --- busybox.orig/console-tools/openvt.c	2008-03-26 09:51:27.000000000 -0400
> +++ busybox/console-tools/openvt.c	2008-03-26 10:10:50.000000000 -0400
> @@ -16,12 +16,16 @@
>  int openvt_main(int argc, char **argv)
>  {
>  	char vtname[sizeof(VC_FORMAT) + 2];
> +	pid_t pid;
> +	int flags;
> +
> +	flags = getopt32(argc, argv, "w");

Does not compile: getopt32() does not take argc, only argv.

Also, you need "+w" - you must not eat -options in
"COMMAND [ARGS...]" part. Try "openvt -w ls -l"

>  
>  	if (argc < 3)
>  		bb_show_usage();
>  
>  	/* check for illegal vt number: < 1 or > 63 */
> -	sprintf(vtname, VC_FORMAT, (int)xatou_range(argv[1], 1, 63));
> +	sprintf(vtname, VC_FORMAT, (int)xatou_range(argv[optind], 1, 63));
>  
>  	bb_daemonize_or_rexec(DAEMON_CLOSE_EXTRA_FDS, argv);
>  	/* grab new one */
> @@ -30,7 +34,13 @@
>  	xdup2(0, STDOUT_FILENO);
>  	xdup2(0, STDERR_FILENO);
>  
> +	if (flags & 1) {
> +		pid = xspawn(&argv[argc-1]);

Bug.

Strace of "./busybox openvt -w 20 ls true":

25653 vfork()                           = 25659
25659 execve("/root/bin/true", ["true"], [/* 32 vars */]) = -1 ENOENT (No such file or directory)
                        ^^^^


> +		flags = wait4pid(pid);
> +	} else {
>  	argv += 2;
>  	BB_EXECVP(argv[0], argv);
> -	_exit(1);

Indentation damage

> +		flags = EXIT_SUCCESS;
> +	}
> +	_exit(flags);
>  }
> diff -urwN busybox.orig/include/usage.h busybox/include/usage.h
> --- busybox.orig/include/usage.h	2008-03-26 09:52:06.000000000 -0400
> +++ busybox/include/usage.h	2008-03-26 10:08:28.000000000 -0400
> @@ -2816,9 +2816,11 @@
>         "to standard output. With no FILE or when FILE is -, read standard input."
>  
>  #define openvt_trivial_usage \
> -       "VTNUM COMMAND [ARGS...]"
> +       "[-w] VTNUM COMMAND [ARGS...]"
>  #define openvt_full_usage \
> -       "Start a command on a new virtual terminal"
> +       "Start a command on a new virtual terminal\n" \
> +       "\nOptions:" \
> +       "\n	-w	wait for command to complete" \

All other help texts are formatted differently.
--
vda


More information about the busybox mailing list