]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/m2/gm2-libs-ch/Selective.c
Update copyright years.
[thirdparty/gcc.git] / gcc / m2 / gm2-libs-ch / Selective.c
CommitLineData
1eee94d3
GM
1/* Selective.c provide access to timeval and select.
2
a945c346 3Copyright (C) 2005-2024 Free Software Foundation, Inc.
1eee94d3
GM
4Contributed by Gaius Mulley <gaius@glam.ac.uk>.
5
6This file is part of GNU Modula-2.
7
8GNU Modula-2 is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 3, or (at your option)
11any later version.
12
13GNU Modula-2 is distributed in the hope that it will be useful, but
14WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16General Public License for more details.
17
18Under Section 7 of GPL version 3, you are granted additional
19permissions described in the GCC Runtime Library Exception, version
203.1, as published by the Free Software Foundation.
21
22You should have received a copy of the GNU General Public License and
23a copy of the GCC Runtime Library Exception along with this program;
24see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
25<http://www.gnu.org/licenses/>. */
26
27#include "config.h"
28#include "system.h"
29#include "ansidecl.h"
30
31#include "gm2-libs-host.h"
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37#if defined(HAVE_SELECT)
38# define FDSET_T fd_set
39#else
40# define FDSET_T void
41#endif
42
43
44#if defined(HAVE_SELECT)
45int Selective_Select (int nooffds,
46 fd_set *readfds,
47 fd_set *writefds,
48 fd_set *exceptfds,
49 struct timeval *timeout)
50{
51 return select (nooffds, readfds, writefds, exceptfds, timeout);
52}
53#else
54int Selective_Select (int nooffds,
55 void *readfds,
56 void *writefds,
57 void *exceptfds,
58 void *timeout)
59{
60 return 0;
61}
62#endif
63
64/* InitTime initialises a timeval structure and returns a pointer to it. */
65
66#if defined(HAVE_SELECT)
67struct timeval *Selective_InitTime (unsigned int sec, unsigned int usec)
68{
69 struct timeval *t = (struct timeval *) malloc (sizeof (struct timeval));
70
71 t->tv_sec = (long int) sec;
72 t->tv_usec = (long int) usec;
73 return t;
74}
75
76void Selective_GetTime (struct timeval *t,
77 unsigned int *sec, unsigned int *usec)
78{
79 *sec = (unsigned int) t->tv_sec;
80 *usec = (unsigned int) t->tv_usec;
81}
82
83void Selective_SetTime (struct timeval *t,
84 unsigned int sec, unsigned int usec)
85{
86 t->tv_sec = sec;
87 t->tv_usec = usec;
88}
89
90/* KillTime frees the timeval structure and returns NULL. */
91
92struct timeval *Selective_KillTime (struct timeval *t)
93{
94 free (t);
95 return NULL;
96}
97
98/* InitSet returns a pointer to a FD_SET. */
99
100fd_set *Selective_InitSet (void)
101{
102 fd_set *s = (fd_set *) malloc (sizeof (fd_set));
103
104 return s;
105}
106
107/* KillSet frees the FD_SET and returns NULL. */
108
109fd_set *Selective_KillSet (fd_set *s)
110{
111 free (s);
112 return NULL;
113}
114
115/* FdZero generate an empty set. */
116
117void Selective_FdZero (fd_set *s)
118{
119 FD_ZERO (s);
120}
121
122/* FS_Set include an element, fd, into set, s. */
123
124void Selective_FdSet (int fd, fd_set *s)
125{
126 FD_SET (fd, s);
127}
128
129
130/* FdClr exclude an element, fd, from the set, s. */
131
132void Selective_FdClr (int fd, fd_set *s)
133{
134 FD_CLR (fd, s);
135}
136
137
138/* FdIsSet return TRUE if, fd, is present in set, s. */
139
140int Selective_FdIsSet (int fd, fd_set *s)
141{
142 return FD_ISSET (fd, s);
143}
144
145/* GetTimeOfDay fills in a record, Timeval, filled in with the
146 current system time in seconds and microseconds.
147 It returns zero (see man 3p gettimeofday). */
148
149int Selective_GetTimeOfDay (struct timeval *t)
150{
151 return gettimeofday (t, NULL);
152}
153#else
154
155void *Selective_InitTime (unsigned int sec, unsigned int usec)
156{
157 return NULL;
158}
159
160void *Selective_KillTime (void *t)
161{
162 return NULL;
163}
164
165void Selective_GetTime (struct timeval *t,
166 unsigned int *sec, unsigned int *usec)
167{
168}
169
170void Selective_SetTime (struct timeval *t,
171 unsigned int sec, unsigned int usec)
172{
173}
174
175fd_set *Selective_InitSet (void)
176{
177 return NULL;
178}
179
180void Selective_FdZero (void *s)
181{
182}
183
184void Selective_FdSet (int fd, void *s)
185{
186}
187
188void Selective_FdClr (int fd, void *s)
189{
190}
191
192int Selective_FdIsSet (int fd, void *s)
193{
194 return 0;
195}
196
197int Selective_GetTimeOfDay (struct timeval *t)
198{
199 return -1;
200}
201#endif
202
203
204/* MaxFdsPlusOne returns max (a + 1, b + 1). */
205
206int Selective_MaxFdsPlusOne (int a, int b)
207{
208 if (a > b)
209 return a+1;
210 else
211 return b+1;
212}
213
214
215/* WriteCharRaw writes a single character to the file descriptor. */
216
217void Selective_WriteCharRaw (int fd, char ch)
218{
219 write (fd, &ch, 1);
220}
221
222
223/* ReadCharRaw read and return a single char from file descriptor, fd. */
224
225char Selective_ReadCharRaw (int fd)
226{
227 char ch;
228
229 read (fd, &ch, 1);
230 return ch;
231}
232
233
234void
235_M2_Selective_init ()
236{
237}
238
239void
240_M2_Selective_finish ()
241{
242}
243
244#ifdef __cplusplus
245}
246#endif