root/replace/setenv.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. setenv

   1 /*
   2  * Copyright (C) 2001 Alan Robertson <alanr@unix.sh>
   3  * This software licensed under the GNU LGPL.
   4  *
   5  *
   6  * This library is free software; you can redistribute it and/or
   7  * modify it under the terms of the GNU Lesser General Public
   8  * License as published by the Free Software Foundation; either
   9  * version 2.1 of the License, or (at your option) any later version.
  10  * 
  11  * This library is distributed in the hope that it will be useful,
  12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14  * Lesser General Public License for more details.
  15  * 
  16  * You should have received a copy of the GNU Lesser General Public
  17  * License along with this library; if not, write to the Free Software
  18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  19  *
  20  */
  21 #include <crm_internal.h>
  22 #include <stdlib.h>
  23 #include <stdio.h>
  24 
  25 /*
  26  *      Small replacement function for setenv()
  27  */
  28 int
  29 setenv(const char *name, const char *value, int why)
     /* [previous][next][first][last][top][bottom][index][help] */
  30 {
  31     int rc = -1;
  32 
  33     if (name && value) {
  34         char *envp = NULL;
  35 
  36         envp = malloc(strlen(name) + strlen(value) + 2);
  37         if (envp) {
  38             /*
  39              * Unfortunately, the putenv API guarantees memory leaks when
  40              * changing environment variables repeatedly...   :-(
  41              */
  42 
  43             sprintf(envp, "%s=%s", name, value);
  44 
  45             /* Cannot free envp (!) */
  46             rc = putenv(envp);
  47         }
  48 
  49     }
  50     return (rc);
  51 }

/* [previous][next][first][last][top][bottom][index][help] */