X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=lib-ui%2Fresize.c;fp=lib-ui%2Fresize.c;h=82fe316075f7721b38cddd9e65b95ad62478bcea;hb=c8102caaf1221828c06752f9ac69271fb999c145;hp=0000000000000000000000000000000000000000;hpb=18da1add170065091118e7379b58d1e385faf0cd;p=apps%2Fmadmutt.git diff --git a/lib-ui/resize.c b/lib-ui/resize.c new file mode 100644 index 0000000..82fe316 --- /dev/null +++ b/lib-ui/resize.c @@ -0,0 +1,77 @@ +/* + * Copyright notice from original mutt: + * Copyright (C) 1996-2000 Michael R. Elkins + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ + +#if HAVE_CONFIG_H +# include "config.h" +#endif + +#if defined(USE_SLANG_CURSES) || defined(HAVE_RESIZETERM) + +#include + +#include "mutt.h" + +#include +#include +#include +#include + +#ifdef HAVE_SYS_IOCTL_H +#include +#else +# ifdef HAVE_IOCTL_H +# include +# endif +#endif + +/* this routine should be called after receiving SIGWINCH */ +void mutt_resize_screen (void) +{ + char *cp; + int fd; + struct winsize w; + +#ifdef HAVE_RESIZETERM + int SLtt_Screen_Rows, SLtt_Screen_Cols; +#endif + + SLtt_Screen_Rows = -1; + SLtt_Screen_Cols = -1; + if ((fd = open ("/dev/tty", O_RDONLY)) != -1) { + if (ioctl (fd, TIOCGWINSZ, &w) != -1) { + SLtt_Screen_Rows = w.ws_row; + SLtt_Screen_Cols = w.ws_col; + } + close (fd); + } + if (SLtt_Screen_Rows <= 0) { + if ((cp = getenv ("LINES")) != NULL) { + SLtt_Screen_Rows = atoi (cp); + } + else + SLtt_Screen_Rows = 24; + } + if (SLtt_Screen_Cols <= 0) { + if ((cp = getenv ("COLUMNS")) != NULL) + SLtt_Screen_Cols = atoi (cp); + else + SLtt_Screen_Cols = 80; + } +#ifdef USE_SLANG_CURSES + delwin (stdscr); + SLsmg_reset_smg (); + SLsmg_init_smg (); + stdscr = newwin (0, 0, 0, 0); + keypad (stdscr, TRUE); +#else + resizeterm (SLtt_Screen_Rows, SLtt_Screen_Cols); +#endif +} + +#endif /* defined(USE_SLANG_CURSES) || defined(HAVE_RESIZETERM) */