|
|
|
|
/*
|
|
|
|
|
** setenv.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
|
Fix broken configure script, reorganize patch, remove redundant AF_LOCAL substitution, add with_gui option, write honey launch script, add postscript documentation, correct FSL linkage, minimize installation logic, add FTP, POP3, and SMTP service decoys, add Linux, AIX, and Windows host definitions, add missing uids and gids to host definitions, remove log files, use 192.168.1/24 as the default network, improve run command start logic, correct log file rotation, correct setenv(3) replacement method, and reorder dependencies
23 years ago
|
|
|
#include <sys/types.h>
|
|
|
|
|
#include "config.h"
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef HAVE_SETENV
|
|
|
|
|
#include <stdlib.h> /* For putenv(3) and malloc(3) */
|
|
|
|
|
#include <string.h> /* For strcpy(3) and strcat(3) */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** Implements setenv C library function for platforms not including it
|
|
|
|
|
**
|
|
|
|
|
*/
|
|
|
|
|
int setenv(const char *kszName, const char *kszValue, int nOverwrite)
|
|
|
|
|
{
|
|
|
|
|
char *szPair = NULL; /* String we will pass to putenv(3) */
|
|
|
|
|
|
|
|
|
|
/* Allocate space for name, value, equals, and string terminator */
|
|
|
|
|
szPair = malloc(strlen(kszName) + strlen(kszValue) + strlen("=") + 1);
|
|
|
|
|
|
|
|
|
|
if (szPair == NULL) /* Memory error */
|
|
|
|
|
return 1; /* Unsuccessful */
|
|
|
|
|
|
|
|
|
|
/* Copy the incoming variables */
|
|
|
|
|
strcpy(szPair, kszName);
|
|
|
|
|
strcat(szPair, "=");
|
|
|
|
|
strcat(szPair, kszValue);
|
|
|
|
|
|
|
|
|
|
if (getenv(szPair) != NULL)
|
|
|
|
|
putenv(szPair); /* Handoff */
|
|
|
|
|
|
|
|
|
|
return 0; /* Success */
|
|
|
|
|
}
|
|
|
|
|
#endif /* !HAVE_SETENV */
|
|
|
|
|
|