X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=console-tools%2Fresize.c;h=828b5bb42960022d8b8a4e4f63d20f3659da7350;hb=765b0eed3ef29a80115708c3249d3a541509cd24;hp=64f318c76ca38d90ebcd608c5e74b5d87212ed2c;hpb=c9c893d4f59418c50c8eb42bd80390026e123dd8;p=oweals%2Fbusybox.git diff --git a/console-tools/resize.c b/console-tools/resize.c index 64f318c76..828b5bb42 100644 --- a/console-tools/resize.c +++ b/console-tools/resize.c @@ -2,30 +2,29 @@ /* * resize - set terminal width and height. * - * Copyright 2006 Bernhard Fischer + * Copyright 2006 Bernhard Reutner-Fischer * * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ /* no options, no getopt */ -#include "busybox.h" +#include "libbb.h" #define ESC "\033" -struct termios old; +#define old_termios_p ((struct termios*)&bb_common_bufsiz1) static void -onintr(int sig ATTRIBUTE_UNUSED) +onintr(int sig UNUSED_PARAM) { - tcsetattr(STDERR_FILENO, TCSANOW, &old); - exit(1); + tcsetattr(STDERR_FILENO, TCSANOW, old_termios_p); + exit(EXIT_FAILURE); } - -int resize_main(int argc, char **argv); -int resize_main(int argc, char **argv) +int resize_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int resize_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) { struct termios new; - struct winsize w = { 0,0,0,0 }; + struct winsize w = { 0, 0, 0, 0 }; int ret; /* We use _stderr_ in order to make resize usable @@ -34,14 +33,16 @@ int resize_main(int argc, char **argv) * and operate on it - should we do the same? */ - tcgetattr(STDERR_FILENO, &old); /* fiddle echo */ - new = old; + tcgetattr(STDERR_FILENO, old_termios_p); /* fiddle echo */ + memcpy(&new, old_termios_p, sizeof(new)); new.c_cflag |= (CLOCAL | CREAD); new.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); - signal(SIGINT, onintr); - signal(SIGQUIT, onintr); - signal(SIGTERM, onintr); - signal(SIGALRM, onintr); + bb_signals(0 + + (1 << SIGINT) + + (1 << SIGQUIT) + + (1 << SIGTERM) + + (1 << SIGALRM) + , onintr); tcsetattr(STDERR_FILENO, TCSANOW, &new); /* save_cursor_pos 7 @@ -60,7 +61,7 @@ int resize_main(int argc, char **argv) * (gotten via TIOCGWINSZ) and recomputing *pixel values */ ret = ioctl(STDERR_FILENO, TIOCSWINSZ, &w); - tcsetattr(STDERR_FILENO, TCSANOW, &old); + tcsetattr(STDERR_FILENO, TCSANOW, old_termios_p); if (ENABLE_FEATURE_RESIZE_PRINT) printf("COLUMNS=%d;LINES=%d;export COLUMNS LINES;\n",