X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=console-tools%2Fchvt.c;h=b1a429eb38ce21f1a233fb4d451fca5b9a67629a;hb=2677cf1b0ac9c31e5bbe7f22cf639dacead7808c;hp=7909645868c05a867ca8a7055c6f48e9dc2f198d;hpb=3e856ce428cabaf6c8d99a2374a1f9a4a05db5f0;p=oweals%2Fbusybox.git diff --git a/console-tools/chvt.c b/console-tools/chvt.c index 790964586..b1a429eb3 100644 --- a/console-tools/chvt.c +++ b/console-tools/chvt.c @@ -1,35 +1,50 @@ /* 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 "busybox.h" + +/* no options, no getopt */ + #include #include #include #include #include +#include "busybox.h" /* From */ -#define VT_ACTIVATE 0x5606 /* make vt active */ -#define VT_WAITACTIVE 0x5607 /* wait for vt active */ +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_usage); - fd = get_console_fd("/dev/console"); - num = atoi(argv[1]); - if (ioctl(fd, VT_ACTIVATE, num)) { - perror("VT_ACTIVATE"); - return EXIT_FAILURE; + if (argc != 2) { + bb_show_usage(); } - if (ioctl(fd, VT_WAITACTIVE, num)) { - perror("VT_WAITACTIVE"); - return EXIT_FAILURE; + + 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; }