mescc: Refactor debug and stub printing.
[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 int
22 abort ()
23 {
24   static int stub = 0;
25   if (__mes_debug () && !stub)
26     eputs ("abort stub\n");
27   stub = 1;
28   return 0;
29 }
30
31 int
32 atof (int x)
33 {
34   static int stub = 0;
35   if (__mes_debug () && !stub)
36     eputs ("atof stub\n");
37   stub = 1;
38   return 0;
39 }
40
41 int
42 atol (char const *s)
43 {
44   return atoi (s);
45 }
46
47 int
48 bcmp (void const *s1, void const *s2, size_t size)
49 {
50   return memcmp (s1, s2, size);
51 }
52
53 void
54 bcopy (void const *src, void *dest, size_t n)
55 {
56   return memmove (dest, src, n);
57 }
58
59 int
60 bzero (void *block, size_t size)
61 {
62   return memset (block, 0, size);
63 }
64
65 int
66 fileno (FILE *stream)
67 {
68   return (int)stream;
69 }
70
71 int
72 fpurge (FILE *stream)
73 {
74   static int stub = 0;
75   if (__mes_debug () && !stub)
76     eputs ("fpurge stub\n");
77   stub = 1;
78   errno = 0;
79   return 0;
80 }
81
82 size_t
83 freadahead (FILE *fp)
84 {
85   static int stub = 0;
86   if (__mes_debug () && !stub)
87     eputs ("freadahead stub\n");
88   stub = 1;
89   errno = 0;
90   return 0;
91 }
92
93 int
94 index (char const *s, int c)
95 {
96   return strchr (s, c);
97 }
98
99 int
100 isalnum (int c)
101 {
102   return isdigit (c) || isalpha (c);
103 }
104
105 int
106 isalpha (int c)
107 {
108   return islower (c) || isupper (c);
109 }
110
111 int
112 iscntrl (int c)
113 {
114   return c >= 0 && c < 32;
115 }
116
117 int
118 isprint (int c)
119 {
120   return c >= 32 && c < 127;
121 }
122
123 int
124 ispunct (int c)
125 {
126   return isprint (c) && !isspace (c) && !isalnum (c);
127 }
128
129 char *
130 mktemp (char *template)
131 {
132   char *p = strchr (template, '\0');
133   int q = (int)template;
134   *--p = ((unsigned char)(q >> 4)) % 26 + 'a';
135   *--p = ((unsigned char)(q >> 8)) % 26 + 'a';
136   *--p = ((unsigned char)(q >> 12)) % 26 + 'a';
137   *--p = ((unsigned char)(q >> 16)) % 26 + 'a';
138   *--p = ((unsigned char)(q >> 20)) % 26 + 'a';
139   *--p = ((unsigned char)(q >> 24)) % 26 + 'a';
140   return template;
141 }
142
143 int
144 pclose (int x)
145 {
146   static int stub = 0;
147   if (__mes_debug () && !stub)
148     eputs ("pclose stub\n");
149   stub = 1;
150   errno = 0;
151   return 0;
152 }
153
154 int
155 popen (int x)
156 {
157   static int stub = 0;
158   if (__mes_debug () && !stub)
159     eputs ("popen stub\n");
160   stub = 1;
161   errno = 0;
162   return 0;
163 }
164
165 int
166 rindex (char const *s, int c)
167 {
168   return strrchr (s, c);
169 }
170
171 int
172 rewind (int x)
173 {
174   static int stub = 0;
175   if (__mes_debug () && !stub)
176     eputs ("rewind stub\n");
177   stub = 1;
178   errno = 0;
179   return 0;
180 }
181
182 int
183 setbuf (int x)
184 {
185   static int stub = 0;
186   if (__mes_debug () && !stub)
187     eputs ("setbuf stub\n");
188   stub = 1;
189   errno = 0;
190   return 0;
191 }
192
193 int
194 system (int x)
195 {
196   static int stub = 0;
197   if (__mes_debug () && !stub)
198     eputs ("system stub\n");
199   stub = 1;
200   errno = 0;
201   return 0;
202 }
203
204 char *sys_errlist[] = {
205   "error 00",
206   "error 01",
207   "error 02",
208   "error 03",
209   "error 04",
210   "error 05",
211   "error 06",
212   "error 07",
213   "error 08",
214   "error 09",
215   "error 10",
216   "error 11",
217   "error 12",
218   "error 13",
219   "error 14",
220   "error 15",
221   "error 16",
222   "error 17",
223   "error 18",
224   "error 19",
225   "error 20",
226   "error 21",
227   "error 22",
228   "error 23",
229   "error 24",
230   "error 25",
231   "error 26",
232   "error 27",
233   "error 28",
234   "error 29",
235   "error 30",
236   "error 31",
237   "error 32",
238   "error 33",
239   "error 34",
240   "error 35",
241   "error 36",
242   "error 37",
243   "error 38",
244   "error 39",
245 };
246
247 int sys_nerr = 39;
248
249 char *
250 strerror (int errnum)
251 {
252   if (__mes_debug ())
253     {
254       eputs ("strerror errnum="); eputs (itoa (errnum)); eputs ("\n");
255     }
256   if (errnum > 0 && errnum <= sys_nerr)
257     return sys_errlist[errnum];
258   return "sterror: unknown error";
259 }