X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=console-tools%2Fdeallocvt.c;h=b2e8e2bef3c4afadead4b983218bc522ec5a5a34;hb=67b23e6043d8e2b30b0bf3bc105b8583c2a26db5;hp=ae4dbb5a8cc93f4d288f9f983cf0b78d6fa88b28;hpb=6b6b3f6ef2f44898a8bddfaae93cc4ef3aa79661;p=oweals%2Fbusybox.git diff --git a/console-tools/deallocvt.c b/console-tools/deallocvt.c index ae4dbb5a8..b2e8e2bef 100644 --- a/console-tools/deallocvt.c +++ b/console-tools/deallocvt.c @@ -1,48 +1,44 @@ +/* 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 "internal.h" + +/* no options, no getopt */ + #include +#include #include #include #include -#include -#include +#include "busybox.h" -extern int getfd(void); -char *progname; +/* From */ +enum { VT_DISALLOCATE = 0x5608 }; /* free memory associated to vt */ -int -deallocvt_main(int argc, char *argv[]) { - int fd, num, i; +int deallocvt_main(int argc, char *argv[]) +{ + /* num = 0 deallocate all unused consoles */ + int num = 0; - if (argc < 1) /* unlikely */ - exit(1); - progname = argv[0]; - - fd = get_console_fd("/dev/console"); - - if (argc == 1) { - /* deallocate all unused consoles */ - if (ioctl(fd,VT_DISALLOCATE,0)) { - perror("VT_DISALLOCATE"); - exit(1); + 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: + break; + default: + bb_show_usage(); } - } else - for (i = 1; i < argc; i++) { - num = atoi(argv[i]); - if (num == 0) - fprintf(stderr, "%s: 0: illegal VT number\n", progname); - else if (num == 1) - fprintf(stderr, "%s: VT 1 cannot be deallocated\n", progname); - else - if (ioctl(fd,VT_DISALLOCATE,num)) { - perror("VT_DISALLOCATE"); - fprintf(stderr, "%s: could not deallocate console %d\n", - progname, num); - exit(1); + + if (-1 == ioctl(get_console_fd(), VT_DISALLOCATE, num)) { + bb_perror_msg_and_die("VT_DISALLOCATE"); } - } - exit(0); + return EXIT_SUCCESS; }