diff options
Diffstat (limited to 'src/kvilib/system/kvi_env.cpp')
-rw-r--r-- | src/kvilib/system/kvi_env.cpp | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/kvilib/system/kvi_env.cpp b/src/kvilib/system/kvi_env.cpp new file mode 100644 index 00000000..1497632e --- /dev/null +++ b/src/kvilib/system/kvi_env.cpp @@ -0,0 +1,89 @@ +//============================================================================= +// +// File : kvi_env.cpp +// Creation date : Sat May 05 2002 02:15:21 CEST by Szymon Stefanek +// +// This file is part of the KVirc irc client distribution +// Copyright (C) 2002 Szymon Stefanek (pragma@kvirc.net) +// +// This program 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 2 +// of the License, or (at your opinion) any later version. +// +// This program 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 this program. If not, write to the Free Software Foundation, +// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +//============================================================================= +#define __KVILIB__ + +#define _KVI_ENV_CPP_ + +#include "kvi_env.h" +#include "kvi_string.h" +#include "kvi_malloc.h" +#include "kvi_memmove.h" + +#ifndef COMPILE_ON_WINDOWS + +bool kvi_setenv(const char * name,const char * value) +{ +#ifdef HAVE_SETENV + return (setenv(name,value,1) == 0); +#else + #ifdef HAVE_PUTENV + int iLen1 = kvi_strLen(name); + int iLen2 = kvi_strLen(value); + char * buf = (char *)kvi_malloc(iLen1 + iLen2 + 2); + kvi_memmove(buf,name,iLen1); + *(buf + iLen1) = '='; + kvi_memmove(buf + iLen1 + 1,value,iLen2); + *(buf + iLen1 + iLen2 + 1) = '\0'; + int iRet = putenv(buf); + if(iRet != 0) + { + kvi_free(buf); + return false; + } + return true; + #else + // no setenv , no putenv.. what the hell of system is this ? + return false; + #endif +#endif +} + +void kvi_unsetenv(const char * name) +{ +#ifdef HAVE_UNSETENV + unsetenv(name); +#else + #ifdef HAVE_PUTENV + int iLen1 = kvi_strLen(name); + char * buf = (char *)kvi_malloc(iLen1 + 1); + kvi_memmove(buf,name,iLen1); + *(buf + iLen1) = '\0'; + int iRet = putenv(buf); + if(iRet != 0) + { + kvi_free(buf); + } else { + // hmmm + if(kvi_getenv(name) == 0) + { + // ok , the string is not in the environment + // we can free it + kvi_free(buf); + } // else this system sux + } + #endif +#endif +} + +#endif //!COMPILE_ON_WINDOWS |