mescc: Support gcc-3.4.0: unsetenv.
* lib/gcc.c (unsetenv): New function.
This commit is contained in:
parent
4f6f79973e
commit
f60cac6e1d
|
@ -138,6 +138,7 @@ t
|
||||||
91-fseek
|
91-fseek
|
||||||
92-stat
|
92-stat
|
||||||
93-fread-fwrite
|
93-fread-fwrite
|
||||||
|
94-unsetenv
|
||||||
"
|
"
|
||||||
|
|
||||||
# 90: needs GNU, fails for mescc, passes for tcc
|
# 90: needs GNU, fails for mescc, passes for tcc
|
||||||
|
|
|
@ -40,6 +40,7 @@ void exit (int);
|
||||||
void free (void *ptr);
|
void free (void *ptr);
|
||||||
char* getenv (char const* s);
|
char* getenv (char const* s);
|
||||||
int setenv (char const* s, char const* v, int overwrite_p);
|
int setenv (char const* s, char const* v, int overwrite_p);
|
||||||
|
void unsetenv (char const *name);
|
||||||
void *malloc (size_t);
|
void *malloc (size_t);
|
||||||
void qsort (void *base, size_t nmemb, size_t size, int (*compar)(void const *, void const *));
|
void qsort (void *base, size_t nmemb, size_t size, int (*compar)(void const *, void const *));
|
||||||
void *realloc (void *p, size_t size);
|
void *realloc (void *p, size_t size);
|
||||||
|
|
19
lib/gcc.c
19
lib/gcc.c
|
@ -61,3 +61,22 @@ __moddi3 (double a, double b)
|
||||||
eputs ("__moddi3 stub\n");
|
eputs ("__moddi3 stub\n");
|
||||||
return ((int) a %(int)b);
|
return ((int) a %(int)b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// gcc-3.4
|
||||||
|
void
|
||||||
|
unsetenv (char const *name)
|
||||||
|
{
|
||||||
|
int length = strlen (name);
|
||||||
|
char **p = environ;
|
||||||
|
while (*p)
|
||||||
|
{
|
||||||
|
if (!strncmp (name, *p, length) && *(*p + length) == '=')
|
||||||
|
{
|
||||||
|
char **q = p;
|
||||||
|
q[0] = q[1];
|
||||||
|
while (*q++)
|
||||||
|
q[0] = q[1];
|
||||||
|
}
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
41
scaffold/tests/94-unsetenv.c
Normal file
41
scaffold/tests/94-unsetenv.c
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of Mes.
|
||||||
|
*
|
||||||
|
* Mes is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* Mes is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <libmes.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
eputs ("setenv\n");
|
||||||
|
setenv ("FOO", "BAR", 1);
|
||||||
|
if (strcmp (getenv ("FOO"), "BAR"))
|
||||||
|
return 1;
|
||||||
|
eputs ("unsetenv\n");
|
||||||
|
unsetenv ("FOO");
|
||||||
|
if (getenv ("FOO"))
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in a new issue