X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=console-tools%2Fchvt.c;h=b1a429eb38ce21f1a233fb4d451fca5b9a67629a;hb=2677cf1b0ac9c31e5bbe7f22cf639dacead7808c;hp=bea00ea83accfd67104533275093b11fa04d115c;hpb=d73dc5b07390fb90e7f605871c993a28eedf1d46;p=oweals%2Fbusybox.git diff --git a/console-tools/chvt.c b/console-tools/chvt.c index bea00ea83..b1a429eb3 100644 --- a/console-tools/chvt.c +++ b/console-tools/chvt.c @@ -1,36 +1,59 @@ +/* vi: set sw=4 ts=4: */ /* - * chvt.c - aeb - 940227 - Change virtual terminal + * Mini chvt implementation for busybox * - * busyboxed by Erik Andersen + * Copyright (C) 1999-2004 by Erik Andersen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "internal.h" -#include -#include -#include + +/* no options, no getopt */ + #include #include #include +#include +#include +#include "busybox.h" -extern int getfd(void); +/* From */ +static const int VT_ACTIVATE = 0x5606; /* make vt active */ +static const int VT_WAITACTIVE = 0x5607; /* wait for vt active */ -int -chvt_main(int argc, char** argv) +int chvt_main(int argc, char **argv) { - int fd, num; - - if ( ( argc != 2) || (**(argv+1) == '-' ) ) { - usage ("chvt N\n\nChange foreground virtual terminal to /dev/ttyN\n"); - } - fd = get_console_fd("/dev/console"); - num = atoi(argv[1]); - if (ioctl(fd,VT_ACTIVATE,num)) { - perror("VT_ACTIVATE"); - exit(FALSE); - } - if (ioctl(fd,VT_WAITACTIVE,num)) { - perror("VT_WAITACTIVE"); - exit(FALSE); - } - exit( TRUE); + int fd, num; + + if (argc != 2) { + bb_show_usage(); + } + + fd = get_console_fd(); + num = bb_xgetlarg(argv[1], 10, 0, INT_MAX); + if((-1 == ioctl(fd, VT_ACTIVATE, num)) || + (-1 == ioctl(fd, VT_WAITACTIVE, num))) { + bb_perror_msg_and_die("ioctl"); + } + return EXIT_SUCCESS; } + +/* +Local Variables: +c-file-style: "linux" +c-basic-offset: 4 +tab-width: 4 +End: +*/