- Remove unnecessary warning from libbb and move bb_wfopen_input near bb_wfopen
[oweals/busybox.git] / console-tools / deallocvt.c
index b89249b87a1b682199219b21ec0fd86030544bd8..00ddf42369a2551bf04d4b48c19846850dfeafd6 100644 (file)
@@ -3,13 +3,13 @@
  * Disallocate virtual terminal(s)
  *
  * Copyright (C) 2003 by Tito Ragusa <farmatito@tiscali.it>
- * Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org>
+ * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
  *
  * 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
@@ -34,33 +34,23 @@ static const int VT_DISALLOCATE = 0x5608;  /* free memory associated to vt */
 
 int deallocvt_main(int argc, char *argv[])
 {
-       int fd, num = 0;
-
-       if (argc > 2) {
-               bb_show_usage();
-       }
-
-       fd = get_console_fd();
-       
-       /*  num=0  deallocate all unused consoles */
-       if (argc == 1) {
-               goto disallocate_all;
-       }
+       /* num = 0 deallocate all unused consoles */
+       int num = 0;
 
-       num = bb_xgetlarg(argv[1], 10, 0, INT_MAX);
-       switch (num) {
-               case 0:
-                       bb_error_msg("0: illegal VT number");
-                       break;
+       switch(argc)
+       {
+               case 2:
+                       if((num = bb_xgetlarg(argv[1], 10, 0, INT_MAX)) == 0)
+                               bb_error_msg_and_die("0: illegal VT number");
+               /* Fallthrough */
                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;
+                       bb_show_usage();
+       }
+
+       if (-1 == ioctl( get_console_fd(), VT_DISALLOCATE, num )) {
+               bb_perror_msg_and_die("VT_DISALLOCATE");
        }
-       return EXIT_FAILURE;
+       return EXIT_SUCCESS;
 }