You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
2.0 KiB

/*
** unsetenv.c: ISO C implementation
** Copyright (c) 2003 Michael Schloh von Bennewitz <michael@schloh.com>
** Copyright (c) 2003 Cable & Wireless <http://www.cw.com/de/>
**
** Permission to use, copy, modify, and distribute this software for
** any purpose with or without fee is hereby granted, provided that
** the above copyright notice and this permission notice appear in all
** copies.
**
** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
** USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
** SUCH DAMAGE.
**
*/
#ifdef HAVE_CONFIG_H
#include <sys/types.h>
#include "config.h"
#endif
#ifndef HAVE_UNSETENV
#include <stdlib.h> /* For putenv(3) and malloc(3) */
#include <string.h> /* For strcpy(3) and strcat(3) */
extern char **environ;
/*
** Implements unsetenv(3) C library function for platforms not including it
*/
void unsetenv(const char *kszName)
{
int nLen;
const char *kszTail;
char **ppEnv;
if (kszName == 0 || environ == 0)
return;
for (kszTail = kszName; *kszTail && *kszTail != '='; kszTail++)
/* noop */;
nLen = kszTail - kszName;
for (ppEnv = environ; *ppEnv != 0; ppEnv++)
if (strncmp(*ppEnv, kszName, nLen) == 0 && (*ppEnv)[nLen] == '=')
break;
while (*ppEnv != 0) {
*ppEnv = *(ppEnv + 1);
ppEnv++;
}
}
#endif /* !HAVE_UNSETENV */