1/* vi: set sw=4 ts=4: */
2/*
3 *  openvt.c - open a vt to run a command.
4 *
5 *  busyboxed by Quy Tonthat <quy@signal3.com>
6 *  hacked by Tito <farmatito@tiscali.it>
7 *
8 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
9 */
10
11/* getopt not needed */
12
13#include "libbb.h"
14
15int openvt_main(int argc, char **argv);
16int openvt_main(int argc, char **argv)
17{
18	char vtname[sizeof(VC_FORMAT) + 2];
19
20	if (argc < 3)
21		bb_show_usage();
22
23	/* check for illegal vt number: < 1 or > 63 */
24	sprintf(vtname, VC_FORMAT, (int)xatou_range(argv[1], 1, 63));
25
26	bb_daemonize_or_rexec(DAEMON_CLOSE_EXTRA_FDS, argv);
27	/* grab new one */
28	close(0);
29	xopen(vtname, O_RDWR);
30	dup2(0, STDOUT_FILENO);
31	dup2(0, STDERR_FILENO);
32
33	BB_EXECVP(argv[2], &argv[2]);
34	_exit(1);
35}
36