mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-04 22:18:11 +02:00
Add new _dbus_get_environment call
It's a wrapper around the environ external variable. It will be important in the future when we allow bus clients to modify the environment of future activated clients. Presently, we just always use the bus daemon environment wholesale.
This commit is contained in:
parent
458c6ead85
commit
417c41f6c1
2 changed files with 43 additions and 0 deletions
|
|
@ -200,6 +200,48 @@ _dbus_clearenv (void)
|
|||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a #NULL-terminated list of key=value pairs from the
|
||||
* environment. Use dbus_free_string_array to free it.
|
||||
*
|
||||
* @returns the environment or #NULL on OOM
|
||||
*/
|
||||
char **
|
||||
_dbus_get_environment (void)
|
||||
{
|
||||
int i, length;
|
||||
extern char **environ;
|
||||
char **environment;
|
||||
|
||||
_dbus_assert (environ != NULL);
|
||||
|
||||
for (length = 0; environ[length] != NULL; length++);
|
||||
|
||||
/* Add one for NULL */
|
||||
length++;
|
||||
|
||||
environment = dbus_new0 (char *, length);
|
||||
|
||||
if (environment == NULL)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; environ[i] != NULL; i++)
|
||||
{
|
||||
environment[i] = _dbus_strdup (environ[i]);
|
||||
|
||||
if (environment[i] == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
if (environ[i] != NULL)
|
||||
{
|
||||
dbus_free_string_array (environment);
|
||||
environment = NULL;
|
||||
}
|
||||
|
||||
return environment;
|
||||
}
|
||||
|
||||
/*
|
||||
* init a pipe instance.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ const char* _dbus_getenv (const char *varname);
|
|||
dbus_bool_t _dbus_setenv (const char *varname,
|
||||
const char *value);
|
||||
dbus_bool_t _dbus_clearenv (void);
|
||||
char ** _dbus_get_environment (void);
|
||||
|
||||
/** A process ID */
|
||||
typedef unsigned long dbus_pid_t;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue