From a860bec167faa960231b7f3c1ca55a49cda5a9d2 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sun, 27 Apr 2003 10:42:31 +0000 Subject: A couple of patches from Tito --- console-tools/deallocvt.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'console-tools/deallocvt.c') diff --git a/console-tools/deallocvt.c b/console-tools/deallocvt.c index a4ba851c8..f641be8d7 100644 --- a/console-tools/deallocvt.c +++ b/console-tools/deallocvt.c @@ -15,29 +15,32 @@ static const int VT_DISALLOCATE = 0x5608; /* free memory associated to vt */ int deallocvt_main(int argc, char *argv[]) { - int fd, num, i; + int fd, num=0; - //if ((argc > 2) || ((argv == 2) && (**(argv + 1) == '-'))) if (argc > 2) bb_show_usage(); fd = get_console_fd(); + + /* num=0 deallocate all unused consoles */ + if (argc == 1) + goto disallocate_all; - if (argc == 1) { - /* deallocate all unused consoles */ - if (ioctl(fd, VT_DISALLOCATE, 0)) - bb_perror_msg_and_die("VT_DISALLOCATE"); - } else { - for (i = 1; i < argc; i++) { - num = atoi(argv[i]); - if (num == 0) - bb_error_msg("0: illegal VT number"); - else if (num == 1) - bb_error_msg("VT 1 cannot be deallocated"); - else if (ioctl(fd, VT_DISALLOCATE, num)) + num=bb_xgetlarg(argv[1], 10, 0, INT_MAX); + + 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; } - - return EXIT_SUCCESS; + return EXIT_FAILURE; } -- cgit v1.2.3