mescc: Support gcc-3.4.0: unsetenv.
[mes.git] / lib / gcc.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 <time.h>
24 #include <sys/times.h>
25
26 FILE *
27 freopen (char const *file_name, char const *opentype, FILE *stream)
28 {
29   fclose (stream);
30   return fopen (file_name, opentype);
31 }
32
33 clock_t
34 times (struct tms *buffer)
35 {
36   eputs ("times stub\n");
37   return 0;
38 }
39
40 unsigned int
41 sleep (unsigned int seconds)
42 {
43   struct timespec requested_time;
44   struct timespec remaining;
45   requested_time.tv_sec = seconds;
46   requested_time.tv_nsec = 0;
47   return nanosleep (&requested_time, &remaining);
48 }
49
50 // gcc-3.2
51 double
52 __divdi3 (double a, double b)
53 {
54   eputs ("__divdi3 stub\n");
55   return ((int)a / (int)b);
56 }
57
58 double
59 __moddi3 (double a, double b)
60 {
61   eputs ("__moddi3 stub\n");
62   return ((int) a %(int)b);
63 }
64
65 // gcc-3.4
66 void
67 unsetenv (char const *name)
68 {
69   int length = strlen (name);
70   char **p = environ;
71   while (*p)
72     {
73       if (!strncmp (name, *p, length) && *(*p + length) == '=')
74         {
75           char **q = p;
76           q[0] = q[1];
77           while (*q++)
78             q[0] = q[1];
79         }
80       p++;
81     }
82 }