bug_16190 fixed
[scilab.git] / scilab / modules / core / src / c / resizesignal.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2020 - ESI Group - Cedric Delamarre
4  *
5  * This file is hereby licensed under the terms of the GNU GPL v2.0,
6  * pursuant to article 5.3.4 of the CeCILL v.2.1.
7  * This file was originally licensed under the terms of the CeCILL v2.1,
8  * and continues to be available under such terms.
9  * For more information, see the COPYING file which you should have received
10  * along with this program.
11  *
12  */
13 #include <stdio.h>
14 #include "resizesignal.h"
15 #include "scilines.h"
16 #include "configvariable_interface.h"
17
18 /* Set the console width read from the term size. */
19 void resize_handler(int sig)
20 {
21     // save the number of lines
22     int lines = getConsoleLines();
23     // set the width and lines from the actual term size
24     scilinesdefault();
25     // avoid the message which ask if we want to continue to print
26     // when the number of lines is too small
27     setConsoleLines(lines);
28 }
29
30 int resizesignal(void)
31 {
32     struct sigaction act;
33
34     memset(&act, 0, sizeof(act));
35     act.sa_sigaction = resize_handler;
36     if (sigaction(SIGWINCH, &act, NULL) != 0)
37     {
38         fprintf(stderr, "Could not set the signal SIGWINCH to the handler.\n");
39         return -1;
40     }
41
42     return 0;
43 }