Remove dependency on GLIBC_2.15
[scilab.git] / scilab / modules / gui / src / nogui / nogui.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA - Allan CORNET
4  * Copyright (C) 2007 - INRIA - Sylvestre LEDRU
5  * Copyright (C) 2010 - DIGITEO - Sylvestre LEDRU
6  *
7  * This file must be used under the terms of the CeCILL.
8  * This source file is licensed as described in the file COPYING, which
9  * you should have received as part of this distribution.  The terms
10  * are also available at
11  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
12  *
13  */
14
15 #ifndef _MSC_VER
16 #include <errno.h>
17 #include <stdio.h> /* fileno */
18 #define __USE_FORTIFY_LEVEL 0 /* Avoid dependency on GLIBC_2.15 __fdelt_chk */
19 #include <sys/select.h> /* fd_set */
20 #include "core_math.h" /* Max */
21 #include "sciprint.h"
22 #endif
23 #include "nogui.h"
24 #include "storeCommand.h"
25 #include "Scierror.h"
26 #include "localization.h"
27 /*--------------------------------------------------------------------------*/
28 BOOL InitializeGUI(void)
29 {
30     return TRUE;
31 }
32 /*--------------------------------------------------------------------------*/
33 int gw_gui()
34 {
35     Scierror(999, _("Scilab '%s' module not installed.\n"), "GUI");
36     return 0;
37 }
38 /*--------------------------------------------------------------------------*/
39 BOOL TerminateGUI(void)
40 {
41     return TRUE;
42 }
43 /*--------------------------------------------------------------------------*/
44 #ifdef _MSC_VER
45 void setVisibleMainWindow(BOOL newVisibleState) {}
46 /*--------------------------------------------------------------------------*/
47 BOOL isVisibleMainWindow(void)
48 {
49     return TRUE;
50 }
51 /*--------------------------------------------------------------------------*/
52 void deiconifyMainWindow(void) {}
53 /*--------------------------------------------------------------------------*/
54 void iconifyMainWindow(void) {}
55 /*--------------------------------------------------------------------------*/
56 void maximizeMainWindow(void) {}
57 /*--------------------------------------------------------------------------*/
58 void normalMainWindow(void) {}
59 /*--------------------------------------------------------------------------*/
60 #else
61 int XClearScreenConsole(char *fname)
62 {
63     sciprint(_("%s: Only available under 'STANDARD' mode.\n"), fname);
64     return 0;
65 }
66 /*--------------------------------------------------------------------------*/
67 void str_to_xterm ( register char * string, int nbytes)
68 {
69
70 }
71 /*--------------------------------------------------------------------------*/
72 void Click_menu(int n)
73 {
74
75 }
76 /*--------------------------------------------------------------------------*/
77 int GetScreenProperty(char *prop, char *value)
78 {
79     return 0;
80 }
81 /*--------------------------------------------------------------------------*/
82 #define LF                    0x000a
83 /* @TODO : this code is for a part duplicated from gui/src/c/xsci/inter.c
84 with some stuff removed (TCL/TK and a few other things)
85 */
86 int Xorgetchar(int interrupt)
87 {
88     int i;
89     int inter_max_plus1 = 0;
90     static fd_set Select_mask_ref;
91     static fd_set select_mask;
92     static fd_set Write_mask_ref;
93     static fd_set write_mask;
94     static struct timeval select_timeout;
95     static int fd_in = 0, fd_out = 0, fd_err = 0 ;
96     static int state = 0;
97     fd_in = fileno(stdin) ;
98     fd_out = fileno(stdout);
99     fd_err = fileno(stderr);
100
101     FD_ZERO(&Select_mask_ref);
102     FD_SET(fd_in , &Select_mask_ref);
103     FD_ZERO(&Write_mask_ref);
104
105     inter_max_plus1 = fd_in;
106
107     inter_max_plus1 = Max(fd_out, inter_max_plus1);
108     inter_max_plus1 = Max(fd_err, inter_max_plus1);
109     inter_max_plus1++;
110
111     for ( ; ; )
112     {
113         fflush(stdout);
114         fflush(stderr);
115
116         /* Initialize masks  */
117         select_mask = Select_mask_ref;
118         write_mask  = Write_mask_ref;
119
120         select_timeout.tv_sec = 0;
121         select_timeout.tv_usec = 10;
122         i = select(inter_max_plus1, &select_mask, &write_mask, (fd_set *)NULL, &select_timeout);
123         if (i < 0)
124         {
125             if (errno != EINTR) /* EINTR  A signal was caught. */
126             {
127                 sciprint(_("Error. A signal has been caught.\n"));
128                 exit(0);
129                 continue;
130             }
131         }
132
133         /* if there's something to output */
134         if ( FD_ISSET(fd_out, &write_mask))
135         {
136             fflush(stdout);
137         }
138         if ( FD_ISSET(fd_err, &write_mask))
139         {
140             fflush(stderr);
141         }
142
143         /* if there's something to read */
144         if (FD_ISSET(fd_in, &select_mask))
145         {
146             state = 1;
147         }
148
149         if (state)
150         {
151             i = getchar();
152             if (i == LF)
153             {
154                 state = 0;
155             }
156             return(i);
157         }
158
159         if (interrupt && (ismenu() == 1))
160         {
161             return(-1);
162         }
163
164     }
165 }
166 /*--------------------------------------------------------------------------*/
167 int XEvorgetchar(int interrupt)
168 {
169     return 0;
170 }
171 /*--------------------------------------------------------------------------*/
172 void main_sci (char *startup, int lstartup, int memory)
173 {
174     Scierror(999, _("Scilab '%s' module not installed.\n"), "GUI");
175 }
176 /*--------------------------------------------------------------------------*/
177 void InitXsession(void)
178 {
179     Scierror(999, _("Scilab '%s' module not installed.\n"), "GUI");
180 }
181 /*--------------------------------------------------------------------------*/
182 #endif /* not  _MSC_VER */