5f935dc6719df02a9ee4b96c3331540b18dcb691
[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 #if NOISY_TIMES
44   eputs ("ctime stub\n");
45 #endif
46   return 0;
47 }
48
49 char *
50 fdgets (char *s, int count, int fd)
51 {
52   int c = 0;
53   char *p = s;
54   while (--count > 0 && c != '\n')
55     {
56       c = fdgetc (fd);
57       if (c == EOF)
58         break;
59       *p++ = c;
60     }
61   if (p == s && (c == EOF || count == -1))
62     return 0;
63   *p = 0;
64   return s;
65 }
66
67 int
68 feof (FILE *stream)
69 {
70   char c = fgetc (stream);
71   if (c != EOF)
72     ungetc (c, stream);
73   return c == EOF;
74 }
75
76 char *
77 fgets (char *s, int count, FILE *stream)
78 {
79   return fdgets (s, count, (int)stream);
80 }
81
82 int
83 frexp (int x)
84 {
85   eputs ("frexp stub\n");
86   return 0;
87 }
88
89 void
90 perror (char const *message)
91 {
92   fprintf (stderr, "%s: %s\n", strerror (errno), message);
93 }
94
95 int
96 sigsetmask (int x)
97 {
98   eputs ("sigsetmask stub\n");
99   return 0;
100 }
101
102 size_t
103 strcspn (char const *string, char const *stopset)
104 {
105   char *p = string;
106   while (*p)
107     if (strchr (stopset, *p))
108       break;
109     else
110       p++;
111   return p - string;
112 }
113
114 char *
115 strncat (char *to, char const *from, size_t size)
116 {
117   if (size == 0)
118     return to;
119   char *p = strchr (to , '\0');
120   while (*from && size-- > 0)
121     *p++ = *from++;
122   *p = 0;
123   return to;
124 }
125
126 char *
127 strpbrk (char const *string, char const* stopset)
128 {
129   char *p = string;
130   while (*p)
131     if (strchr (stopset, *p))
132       break;
133     else
134       p++;
135   return p;
136 }
137
138 size_t
139 strspn (char const *string, char const *skipset)
140 {
141   char *p = string;
142   while (*p)
143     if (!strchr (skipset, *p))
144       break;
145     else
146       p++;
147   return p - string;
148 }
149
150 int
151 sys_siglist (int x)
152 {
153   eputs ("sys_siglist stub\n");
154   return 0;
155 }
156
157 int
158 umask (int x)
159 {
160   eputs ("umask stub\n");
161   return 0;
162 }
163
164 int
165 utime (int x)
166 {
167 #if NOISY_TIMES
168   eputs ("utime stub\n");
169 #endif
170   return 0;
171 }
172
173 // binutils-2.10.1
174 int
175 fscanf (FILE *stream, char const *template, ...)
176 {
177   eputs ("fscan stub\n");
178   return 0;
179 }
180
181 int
182 isascii (int c)
183 {
184   return c >= 0 && c <= 127;
185 }
186
187 void *
188 #if __MESC__
189 bsearch (void const *key, void const *array, size_t count, size_t size, void (*compare) ())
190 #else
191 bsearch (void const *key, void const *array, size_t count, size_t size, comparison_fn_t compare)
192 #endif
193 {
194   eputs ("bsearch stub\n");
195   return 0;
196 }
197
198 struct tm *
199 gmtime (time_t const *time)
200 {
201 #if NOISY_TIMES
202   eputs ("gmtime stub\n");
203 #endif
204   return localtime (time);
205 }
206
207 #if __SBRK_CHAR_PTRDIFF
208 char *
209 sbrk (ptrdiff_t)
210 #else
211 void *
212 sbrk (intptr_t delta)
213 #endif
214 {
215   if (delta >= 0)
216     return malloc (delta);
217   return g_brk;
218 }