Logo Search packages:      
Sourcecode: dbus version File versions

dbus_bool_t _dbus_setenv ( const char *  varname,
const char *  value 
)

Wrapper for setenv(). If the value is NULL, unsets the environment variable.

Todo:
if someone can verify it's safe, we could avoid the memleak when doing an unset.
Parameters:
varname name of environment variable
value value of environment variable
Returns:
TRUE on success.

Definition at line 102 of file dbus-sysdeps.c.

References _dbus_assert, FALSE, NULL, and TRUE.

{
  _dbus_assert (varname != NULL);
  
  if (value == NULL)
    {
#ifdef HAVE_UNSETENV
      unsetenv (varname);
      return TRUE;
#else
      char *putenv_value;
      size_t len;

      len = strlen (varname);

      /* Use system malloc to avoid memleaks that dbus_malloc
       * will get upset about.
       */
      
      putenv_value = malloc (len + 1);
      if (putenv_value == NULL)
        return FALSE;

      strcpy (putenv_value, varname);
      
      return (putenv (putenv_value) == 0);
#endif
    }
  else
    {
#ifdef HAVE_SETENV
      return (setenv (varname, value, TRUE) == 0);
#else
      char *putenv_value;
      size_t len;
      size_t varname_len;
      size_t value_len;

      varname_len = strlen (varname);
      value_len = strlen (value);
      
      len = varname_len + value_len + 1 /* '=' */ ;

      /* Use system malloc to avoid memleaks that dbus_malloc
       * will get upset about.
       */
      
      putenv_value = malloc (len + 1);
      if (putenv_value == NULL)
        return FALSE;

      strcpy (putenv_value, varname);
      strcpy (putenv_value + varname_len, "=");
      strcpy (putenv_value + varname_len + 1, value);
      
      return (putenv (putenv_value) == 0);
#endif
    }
}


Generated by  Doxygen 1.6.0   Back to index