X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=console-tools%2Fchvt.c;h=b1a429eb38ce21f1a233fb4d451fca5b9a67629a;hb=2677cf1b0ac9c31e5bbe7f22cf639dacead7808c;hp=635022a57e4354f16c75b485cf3cc2281497567e;hpb=029011b9eeaf491d00fda1d072c4c6094df96c3a;p=oweals%2Fbusybox.git diff --git a/console-tools/chvt.c b/console-tools/chvt.c index 635022a57..b1a429eb3 100644 --- a/console-tools/chvt.c +++ b/console-tools/chvt.c @@ -1,38 +1,52 @@ /* 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 fd, num; - if ((argc != 2) || (**(argv + 1) == '-')) { - usage - ("chvt N\n\nChange foreground virtual terminal to /dev/ttyN\n"); + if (argc != 2) { + bb_show_usage(); } - 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); + + 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"); } - exit(TRUE); + return EXIT_SUCCESS; }