mescc: Add proper includes.
[mes.git] / lib / m4.c
1 /* -*-comment-start: "//";comment-end:""-*-
2  * Mes --- Maxwell Equations of Software
3  * Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
4  *
5  * This file is part of Mes.
6  *
7  * Mes is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or (at
10  * your option) any later version.
11  *
12  * Mes is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #include <ctype.h>
22
23 int
24 abort ()
25 {
26   static int stub = 0;
27   if (__mes_debug () && !stub)
28     eputs ("abort stub\n");
29   stub = 1;
30   return 0;
31 }
32
33 int
34 atof (int x)
35 {
36   static int stub = 0;
37   if (__mes_debug () && !stub)
38     eputs ("atof stub\n");
39   stub = 1;
40   return 0;
41 }
42
43 int
44 atol (char const *s)
45 {
46   return atoi (s);
47 }
48
49 int
50 bcmp (void const *s1, void const *s2, size_t size)
51 {
52   return memcmp (s1, s2, size);
53 }
54
55 void
56 bcopy (void const *src, void *dest, size_t n)
57 {
58   memmove (dest, src, n);
59 }
60
61 int
62 bzero (void *block, size_t size)
63 {
64   return memset (block, 0, size);
65 }
66
67 int
68 fileno (FILE *stream)
69 {
70   return (int)stream;
71 }
72
73 int
74 fpurge (FILE *stream)
75 {
76   static int stub = 0;
77   if (__mes_debug () && !stub)
78     eputs ("fpurge stub\n");
79   stub = 1;
80   errno = 0;
81   return 0;
82 }
83
84 size_t
85 freadahead (FILE *fp)
86 {
87   static int stub = 0;
88   if (__mes_debug () && !stub)
89     eputs ("freadahead stub\n");
90   stub = 1;
91   errno = 0;
92   return 0;
93 }
94
95 int
96 index (char const *s, int c)
97 {
98   return strchr (s, c);
99 }
100
101 int
102 isalnum (int c)
103 {
104   return isdigit (c) || isalpha (c);
105 }
106
107 int
108 isalpha (int c)
109 {
110   return islower (c) || isupper (c);
111 }
112
113 int
114 iscntrl (int c)
115 {
116   return c >= 0 && c < 32;
117 }
118
119 int
120 isprint (int c)
121 {
122   return c >= 32 && c < 127;
123 }
124
125 int
126 ispunct (int c)
127 {
128   return isprint (c) && !isspace (c) && !isalnum (c);
129 }
130
131 char *
132 mktemp (char *template)
133 {
134   char *p = strchr (template, '\0');
135   int q = (int)template;
136   *--p = ((unsigned char)(q >> 4)) % 26 + 'a';
137   *--p = ((unsigned char)(q >> 8)) % 26 + 'a';
138   *--p = ((unsigned char)(q >> 12)) % 26 + 'a';
139   *--p = ((unsigned char)(q >> 16)) % 26 + 'a';
140   *--p = ((unsigned char)(q >> 20)) % 26 + 'a';
141   *--p = ((unsigned char)(q >> 24)) % 26 + 'a';
142   return template;
143 }
144
145 int
146 pclose (int x)
147 {
148   static int stub = 0;
149   if (__mes_debug () && !stub)
150     eputs ("pclose stub\n");
151   stub = 1;
152   errno = 0;
153   return 0;
154 }
155
156 int
157 popen (int x)
158 {
159   static int stub = 0;
160   if (__mes_debug () && !stub)
161     eputs ("popen stub\n");
162   stub = 1;
163   errno = 0;
164   return 0;
165 }
166
167 int
168 rindex (char const *s, int c)
169 {
170   return strrchr (s, c);
171 }
172
173 int
174 rewind (int x)
175 {
176   static int stub = 0;
177   if (__mes_debug () && !stub)
178     eputs ("rewind stub\n");
179   stub = 1;
180   errno = 0;
181   return 0;
182 }
183
184 int
185 setbuf (int x)
186 {
187   static int stub = 0;
188   if (__mes_debug () && !stub)
189     eputs ("setbuf stub\n");
190   stub = 1;
191   errno = 0;
192   return 0;
193 }
194
195 int
196 system (int x)
197 {
198   static int stub = 0;
199   if (__mes_debug () && !stub)
200     eputs ("system stub\n");
201   stub = 1;
202   errno = 0;
203   return 0;
204 }
205
206 char *sys_errlist[] = {
207   "error 00",
208   "error 01",
209   "error 02",
210   "error 03",
211   "error 04",
212   "error 05",
213   "error 06",
214   "error 07",
215   "error 08",
216   "error 09",
217   "error 10",
218   "error 11",
219   "error 12",
220   "error 13",
221   "error 14",
222   "error 15",
223   "error 16",
224   "error 17",
225   "error 18",
226   "error 19",
227   "error 20",
228   "error 21",
229   "error 22",
230   "error 23",
231   "error 24",
232   "error 25",
233   "error 26",
234   "error 27",
235   "error 28",
236   "error 29",
237   "error 30",
238   "error 31",
239   "error 32",
240   "error 33",
241   "error 34",
242   "error 35",
243   "error 36",
244   "error 37",
245   "error 38",
246   "error 39",
247 };
248
249 int sys_nerr = 39;
250
251 char *
252 strerror (int errnum)
253 {
254   if (__mes_debug ())
255     {
256       eputs ("strerror errnum="); eputs (itoa (errnum)); eputs ("\n");
257     }
258   if (errnum > 0 && errnum <= sys_nerr)
259     return sys_errlist[errnum];
260   return "sterror: unknown error";
261 }