Magellan Linux

Annotation of /trunk/mkinitrd-magellan/busybox/console-tools/openvt.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (hide annotations) (download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File MIME type: text/plain
File size: 902 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 niro 532 /* 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 "busybox.h"
14    
15     int openvt_main(int argc, char **argv)
16     {
17     int fd;
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)xatoul_range(argv[1], 1, 63));
25    
26     if (fork() == 0) {
27     /* child */
28     /* leave current vt (controlling tty) */
29     setsid();
30     /* and grab new one */
31     fd = xopen(vtname, O_RDWR);
32     /* Reassign stdin, stdout and sterr */
33     dup2(fd, STDIN_FILENO);
34     dup2(fd, STDOUT_FILENO);
35     dup2(fd, STDERR_FILENO);
36     while (fd > 2) close(fd--);
37    
38     execvp(argv[2], &argv[2]);
39     _exit(1);
40     }
41     return EXIT_SUCCESS;
42     }