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