mescc: Support gcc-3.2: puts with newline.
[mes.git] / lib / binutils.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 <libmes.h>
22 #include <stdint.h>
23 #include <stdlib.h>
24
25 int
26 abs (int x)
27 {
28   if (x < 0)
29     return -x;
30   return x;
31 }
32
33 int
34 chown (char const *file_name, uid_t owner, gid_t group)
35 {
36   eputs ("chown stub\n");
37   return 0;
38 }
39
40 int
41 ctime (int x)
42 {
43   eputs ("ctime stub\n");
44   return 0;
45 }
46
47 int
48 fcntl (int x)
49 {
50   eputs ("fcntl stub\n");
51   return 0;
52 }
53
54 char *
55 fdgets (char *s, int count, int fd)
56 {
57   int c = 0;
58   char *p = s;
59   while (--count > 0 && c != '\n')
60     {
61       c = fdgetc (fd);
62       if (c == EOF)
63         break;
64       *p++ = c;
65     }
66   if (p == s && (c == EOF || count == -1))
67     return 0;
68   *p = 0;
69   return s;
70 }
71
72 int
73 feof (FILE *stream)
74 {
75   char c = fgetc (stream);
76   if (c != EOF)
77     ungetc (c, stream);
78   return c == EOF;
79 }
80
81 char *
82 fgets (char *s, int count, FILE *stream)
83 {
84   return fdgets (s, count, (int)stream);
85 }
86
87 int
88 frexp (int x)
89 {
90   eputs ("frexp stub\n");
91   return 0;
92 }
93
94 int
95 getgid (int x)
96 {
97   eputs ("getgid stub\n");
98   return 0;
99 }
100
101 int
102 getpid (int x)
103 {
104   eputs ("getpid stub\n");
105   return 0;
106 }
107
108 int
109 getuid (int x)
110 {
111   eputs ("getuid stub\n");
112   return 0;
113 }
114
115 void
116 perror (char const *message)
117 {
118   fprintf (stderr, "%s: %s\n", strerror (errno), message);
119 }
120
121 int
122 setitimer (int which, struct itimerval const *new,
123            struct itimerval *old)
124 {
125   eputs ("setitimer stub\n");
126   return 0;
127 }
128
129 int
130 sigsetmask (int x)
131 {
132   eputs ("sigsetmask stub\n");
133   return 0;
134 }
135
136 size_t
137 strcspn (char const *string, char const *stopset)
138 {
139   char *p = string;
140   while (*p)
141     if (strchr (stopset, *p))
142       break;
143     else
144       p++;
145   return p - string;
146 }
147
148 char *
149 strncat (char *to, char const *from, size_t size)
150 {
151   if (size == 0)
152     return to;
153   char *p = strchr (to , '\0');
154   while (*from && size-- > 0)
155     *p++ = *from++;
156   *p = 0;
157   return to;
158 }
159
160 char *
161 strpbrk (char const *string, char const* stopset)
162 {
163   char *p = string;
164   while (*p)
165     if (strchr (stopset, *p))
166       break;
167     else
168       p++;
169   return p;
170 }
171
172 size_t
173 strspn (char const *string, char const *skipset)
174 {
175   char *p = string;
176   while (*p)
177     if (!strchr (skipset, *p))
178       break;
179     else
180       p++;
181   return p - string;
182 }
183
184 int
185 sys_siglist (int x)
186 {
187   eputs ("sys_siglist stub\n");
188   return 0;
189 }
190
191 int
192 umask (int x)
193 {
194   eputs ("umask stub\n");
195   return 0;
196 }
197
198 int
199 utime (int x)
200 {
201   eputs ("utime stub\n");
202   return 0;
203 }
204
205 // binutils-2.10.1
206 int
207 fscanf (FILE *stream, char const *template, ...)
208 {
209   eputs ("fscan stub\n");
210   return 0;
211 }
212
213 int
214 isascii (int c)
215 {
216   return c >= 0 && c <= 127;
217 }
218
219 void *
220 #if __MESC__
221 bsearch (void const *key, void const *array, size_t count, size_t size, void (*compare) ())
222 #else
223 bsearch (void const *key, void const *array, size_t count, size_t size, comparison_fn_t compare)
224 #endif
225 {
226   eputs ("bsearch stub\n");
227   return 0;
228 }
229
230 struct tm *
231 gmtime (time_t const *time)
232 {
233   eputs ("gmtime stub\n");
234   return localtime (time);
235 }
236
237 #if __SBRK_CHAR_PTRDIFF
238 char *
239 sbrk (ptrdiff_t)
240 #else
241 void *
242 sbrk (intptr_t delta)
243 #endif
244 {
245   if (delta >= 0)
246     return malloc (delta);
247   return g_brk;
248 }