Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
  2. #include <libc/stubs.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int
  7. setenv (const char *var, const char *val, int replace)
  8. {
  9.   char *prev;
  10.  
  11.   if (var == (char *)0 || val == (char *)0)
  12.     return -1;
  13.  
  14.   if ((prev  = getenv (var)) && !replace)
  15.     return 0;
  16.   else
  17.     {
  18.       size_t l_var = strlen (var);
  19.       char *envstr = (char *)alloca (l_var + strlen (val) + 2);
  20.       char *peq    = strchr (var, '=');
  21.  
  22.       if (*val == '=')
  23.         ++val;
  24.       if (peq)
  25.         l_var = peq - var;
  26.  
  27.       strncpy (envstr, var, l_var);
  28.       envstr[l_var++] = '=';
  29.       strcpy (envstr + l_var, val);
  30.  
  31.       return putenv (envstr);
  32.     }
  33. }
  34.