From 4aca87515a5083ae0e31ce3177189fd43b6d05ac Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 3 Jan 2015 13:58:15 +0100 Subject: patch to Vanilla Tomato 1.28 --- .../src/router/busybox/console-tools/deallocvt.c | 59 +++++++++------------- 1 file changed, 23 insertions(+), 36 deletions(-) (limited to 'release/src/router/busybox/console-tools/deallocvt.c') diff --git a/release/src/router/busybox/console-tools/deallocvt.c b/release/src/router/busybox/console-tools/deallocvt.c index f641be8d..09748834 100644 --- a/release/src/router/busybox/console-tools/deallocvt.c +++ b/release/src/router/busybox/console-tools/deallocvt.c @@ -1,46 +1,33 @@ /* vi: set sw=4 ts=4: */ /* - * disalloc.c - aeb - 940501 - Disallocate virtual terminal(s) - * Renamed deallocvt. + * Disallocate virtual terminal(s) + * + * Copyright (C) 2003 by Tito Ragusa + * Copyright (C) 1999-2004 by Erik Andersen + * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ -#include -#include -#include -#include -#include -#include "busybox.h" -/* From */ -static const int VT_DISALLOCATE = 0x5608; /* free memory associated to vt */ - -int deallocvt_main(int argc, char *argv[]) -{ - int fd, num=0; +/* no options, no getopt */ - if (argc > 2) - bb_show_usage(); +#include "libbb.h" - fd = get_console_fd(); - - /* num=0 deallocate all unused consoles */ - if (argc == 1) - goto disallocate_all; +/* From */ +enum { VT_DISALLOCATE = 0x5608 }; /* free memory associated to vt */ - num=bb_xgetlarg(argv[1], 10, 0, INT_MAX); +int deallocvt_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int deallocvt_main(int argc UNUSED_PARAM, char **argv) +{ + /* num = 0 deallocate all unused consoles */ + int num = 0; - switch(num) - { - case 0: - bb_error_msg("0: illegal VT number"); - break; - case 1: - bb_error_msg("VT 1 cannot be deallocated"); - break; - default: -disallocate_all: - if (ioctl(fd, VT_DISALLOCATE, num)) - bb_perror_msg_and_die("VT_DISALLOCATE"); - return EXIT_SUCCESS; + if (argv[1]) { + if (argv[2]) + bb_show_usage(); + num = xatou_range(argv[1], 1, 63); } - return EXIT_FAILURE; + + /* double cast suppresses "cast to ptr from int of different size" */ + xioctl(get_console_fd_or_die(), VT_DISALLOCATE, (void *)(ptrdiff_t)num); + return EXIT_SUCCESS; } -- cgit v1.2.3-54-g00ecf